java regex pattern unclosed character class
java, regex
Solution
Assuming that you want to match `\` and `-` and not `]`:
Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'\\\\-]*$");
You need to double escape your backslashes, as `\` is also an escape character in regex. Thus `\\]` escapes the backslash for java but not for regex. You need to add another java-escaped `\` in order to regex-escape your second java-escaped `\`.
So `\\\\` after java escaping becomes `\\` which is then regex escaped to `\`.
Moving `-` to the end of the sequence means that it is used as a character, instead of a range operator as pointed out by Pshemo.
Problem
I need some help. Im getting: ``` Caused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 24 ^[a-zA-Z└- 0-9£µ /.'-\]*$ ^ at java.util.regex.Pattern.error(Pattern.java:1713) at java.util.regex.Pattern.clazz(Pattern.java:2254) at java.util.regex.Pattern.sequence(Pattern.java:1818) at java.util.regex.Pattern.expr(Pattern.java:1752) at java.util.regex.Pattern.compile(Pattern.java:1460) at java.util.regex.Pattern.<init>(Pattern.java:1133) at java.util.regex.Pattern.compile(Pattern.java:823) ``` Here is my code: ``` String testString = value.toString(); Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'-\\]*$"); Matcher m = pattern.matcher(testString); ``` I have to use the unicode value for some because I'm working with xhtml. Any help would be great!