Code:
package org.code2care.example;
public class PatternSyntaxExceptionExample {
public static void main(String[] args) {
String string = "1(2(3(4(5";
String[] strArr = string.split("(");
}
}
Exception:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 1
(
at java.base/java.util.regex.Pattern.error(Pattern.java:2028)
at java.base/java.util.regex.Pattern.accept(Pattern.java:1878)
at java.base/java.util.regex.Pattern.group0(Pattern.java:3053)
at java.base/java.util.regex.Pattern.sequence(Pattern.java:2124)
at java.base/java.util.regex.Pattern.expr(Pattern.java:2069)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1783)
at java.base/java.util.regex.Pattern.<init>(Pattern.java:1430)
at java.base/java.util.regex.Pattern.compile(Pattern.java:1069)
at java.base/java.lang.String.split(String.java:3151)
at java. base/java.lang.String.split(String.java:3197)
at org.code2care.example.JavaSplitOnDotStringExample2.main(JavaSplitOnDotStringExample2.java:7)
Reason for the exception:
The java.lang.String split() function throws a PatternSyntaxException if the if the regular expression's syntax is invalid.
If you take a closer look at the regular expression used here open braces (, this has a special meaning when working with Regular Expressions. Such characters need to be escaped with a double forward slash \\
Fix:
Change the regex string from,
string.split("(");
to,
string.split("\\(");
Below is the list of all the characters that when you want to use "literally" in the regex string needs to be escaped.
| Character | Description |
|---|---|
\ | Escape character |
. | Any character except a newline |
+ | One or more occurrences |
* | Zero or more occurrences |
? | Zero or one occurrence |
| ` | ` |
( | Start of a capturing group |
) | End of a capturing group |
[ | Start of a character class |
] | End of a character class |
{ | Start of a quantifier |
} | End of a quantifier |
- | Range of characters in a class |
^ | Start of a string/line |
$ | End of a string/line |
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!