-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8u72
-
x86_64
-
windows_7
FULL PRODUCT VERSION :
java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Tested on Window 7 professional
A DESCRIPTION OF THE PROBLEM :
See sample code below:
it works fine with lower case, but after changin the test string to upper case (only the first letter), calling matches method halt somewhere
==========================================================
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
no solution
java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Tested on Window 7 professional
A DESCRIPTION OF THE PROBLEM :
See sample code below:
it works fine with lower case, but after changin the test string to upper case (only the first letter), calling matches method halt somewhere
==========================================================
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class MatchesMethod{
public boolean bar(String str){
return str.matches(".*\\d*[A-Z][a-z]*\\d* (\\d*[a-zA-Z]*\\s*\\d*\\s*)*\\d*[A-Z][a-z]*\\d* (\\D*\\d){10,}\\D*");
}
public static void main(String[] args){
MatchesMethod m=new MatchesMethod();
String str = "hello Javajava 1234567890";
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
str = "Hello Javajava 1234567890"; //cap the H
System.out.print("test with string:"+str);
m.bar(str);
System.out.println(" is OK.");
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
no solution
- duplicates
-
JDK-8139263 Matcher#find is very slow when no match is found
-
- Closed
-
-
JDK-8140212 Slow performance of Matcher.find
-
- Closed
-
-
JDK-8141066 Regular expression parsing loop
-
- Closed
-