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

回到顶部