-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
8, 9
-
generic
-
generic
FULL PRODUCT VERSION :
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux mag.ca.com 2.6.32-504.23.4.el6.x86_64 #1 SMP Fri May 29 10:16:43 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
The following code fails on JDK 8 but works fine on JDK 7
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
REGRESSION. Last worked in version 7u80
ADDITIONAL REGRESSION INFORMATION:
This issue is not seen in JDK 7.
I tried both Oracle and OpenJDK and see the issue in both distributions.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and Run the following program in JRE 8 -
public class TestJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
System.out.println(p.toString());
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The program must print the compiled regex pattern.
ACTUAL -
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
ERROR MESSAGES/STACK TRACES THAT OCCUR :
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.regex.Pattern;
public class TestJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
System.out.println(p.toString());
}
}
---------- END SOURCE ----------
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux mag.ca.com 2.6.32-504.23.4.el6.x86_64 #1 SMP Fri May 29 10:16:43 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
The following code fails on JDK 8 but works fine on JDK 7
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
REGRESSION. Last worked in version 7u80
ADDITIONAL REGRESSION INFORMATION:
This issue is not seen in JDK 7.
I tried both Oracle and OpenJDK and see the issue in both distributions.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and Run the following program in JRE 8 -
public class TestJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
System.out.println(p.toString());
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The program must print the compiled regex pattern.
ACTUAL -
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
ERROR MESSAGES/STACK TRACES THAT OCCUR :
On JDK 8, the regex compilation fails with the following stack trace:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
^(.{\Q8\E})
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.closure(Pattern.java:3157)
at java.util.regex.Pattern.sequence(Pattern.java:2134)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.group0(Pattern.java:2905)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.ca.samples.esales.TestJava.main(TestJava.java:11)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.util.regex.Pattern;
public class TestJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile("^(.{\\Q8\\E})");
System.out.println(p.toString());
}
}
---------- END SOURCE ----------
- relates to
-
JDK-6990617 Regular expression doesn't match if unicode character next to a digit.
-
- Closed
-