Java正则表达式模式未封闭的字符类
我需要一些帮助。我越来越:
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)
这是我的代码:
String testString = value.toString();Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'-\\]*$");
Matcher m = pattern.matcher(testString);
我必须使用unicode值,因为我正在使用xhtml。
任何帮助将是巨大的!
回答:
假设您要匹配\
,-
而不是]
:
Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'\\\\-]*$");
您需要加倍转义反斜杠,\
正则表达式中的转义字符也是如此。因此\\]
,对于Java而不是对正则表达式,可以使用反斜杠。您需要添加另一个java-
escaped \
以便正则表达式-escape您的第二个Java-escaped \
。
因此,\\\\
在Java转义变成\\
regex后转义为\
。
移动-
到序列的末尾意味着将其用作字符,而不是Pshemo指出的范围运算符。
以上是 Java正则表达式模式未封闭的字符类 的全部内容, 来源链接: utcz.com/qa/411560.html