尝试与正则表达式匹配时出现java.util.regex.PatternSyntaxException

尝试与正则表达式匹配时出现java.util.regex.PatternSyntaxException,java,regex,Java,Regex,当我试图执行下面的代码时 text.matches("[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]"); text.matches(“[a-zA-Z0-9!\”#$%&'()*+,-./:;?@[\]^ `{124;}~]”; 我有个例外 Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class ne

当我试图执行下面的代码时

text.matches("[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]");
text.matches(“[a-zA-Z0-9!\”#$%&'()*+,-./:;?@[\]^ `{124;}~]”;
我有个例外

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 43
[a-zA-Z0-9 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]
                                           ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.matches(Unknown Source)
    at java.lang.String.matches(Unknown Source)
    at test.G3Utils.checkIsAttribANS(G3Utils.java:47)
    at test.G3Utils.main(G3Utils.java:6)
线程“main”java.util.regex.PatternSyntaxException中的异常:索引43附近的未关闭字符类 [a-zA-Z0-9!”#$%&'()*+,-./:;?@[\]^{124;}] ^ 位于java.util.regex.Pattern.error(未知源) 位于java.util.regex.Pattern.clazz(未知源代码) 位于java.util.regex.Pattern.sequence(未知源) 位于java.util.regex.Pattern.expr(未知源) 位于java.util.regex.Pattern.compile(未知源代码) 位于java.util.regex.Pattern。(未知源) 位于java.util.regex.Pattern.compile(未知源代码) 位于java.util.regex.Pattern.matches(未知源) at java.lang.String.matches(未知源) 在test.G3Utils.checkIsAttribANS(G3Utils.java:47) 位于test.G3Utils.main(G3Utils.java:6)
请帮助我解决此问题

您需要像转义字符一样转义
[
字符

因此,正则表达式的固定版本是:

[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]
[a-zA-Z0-9!\“$%&'()*+,-./:;?\\[\\]^ `{124}]

您需要转义
[
字符,就像转义
]
字符一样

因此,正则表达式的固定版本是:

[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]
[a-zA-Z0-9!\“$%&'()*+,-./:;?\\[\\]^ `{124}]

您需要转义
[
字符,就像转义
]
字符一样

因此,正则表达式的固定版本是:

[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]
[a-zA-Z0-9!\“$%&'()*+,-./:;?\\[\\]^ `{124}]

您需要转义
[
字符,就像转义
]
字符一样

因此,正则表达式的固定版本是:

[a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]
[a-zA-Z0-9!\“$%&'()*+,-./:;?\\[\\]^ `{124}]

您可以这样改进您的正则表达式:

“[\\w!\”\\$%&'()*+,-./:;?\\\[\]^{{124;}~”
在这里,您可以利用预定义的字符类
\w

\w
相当于
[a-zA-Z0-9]


参考资料:

您可以这样改进您的正则表达式:

“[\\w!\”\\$%&'()*+,-./:;?\\\[\]^{{124;}~”
在这里,您可以利用预定义的字符类
\w

\w
相当于
[a-zA-Z0-9]


参考资料:

您可以这样改进您的正则表达式:

“[\\w!\”\\$%&'()*+,-./:;?\\\[\]^{{124;}~”
在这里,您可以利用预定义的字符类
\w

\w
相当于
[a-zA-Z0-9]


参考资料:

您可以这样改进您的正则表达式:

“[\\w!\”\\$%&'()*+,-./:;?\\\[\]^{{124;}~”
在这里,您可以利用预定义的字符类
\w

\w
相当于
[a-zA-Z0-9]


参考:

在正则表达式的列表中使用literal
]
时,应将其作为第一个字符,否则解析器将无法理解它。不过,Java也接受转义,请参见下一段

对于Java,您需要使用
\
转义
[
,但您需要在Java中转义它以将其用作文本字符串,因此将
[
替换为
\[

这将使您的正则表达式工作:

text.matches("[]a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[^_`{|}~]");
text.matches(“[]a-zA-Z0-9!\”#$%&'()*+,-./:;?@\\[^ `{124;}~”;

另一点要注意的是,
,-。
匹配从逗号到点的间隔,如果这不是所需的行为,则将
-
移动到最后一个位置。(这是有效的,因为ASCII表顺序是
-
)。

当使用literal
]
在正则表达式的列表中,您应该将其作为第一个字符,否则解析器将无法理解它。但是,Java也接受转义,请参见下一段

对于Java,您需要使用
\
转义
[
,但您需要在Java中转义它以将其用作文本字符串,因此将
[
替换为
\[

这将使您的正则表达式工作:

text.matches("[]a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[^_`{|}~]");
text.matches(“[]a-zA-Z0-9!\”#$%&'()*+,-./:;?@\\[^ `{124;}~”;

另一点要注意的是,
,-。
匹配从逗号到点的间隔,如果这不是所需的行为,则将
-
移动到最后一个位置。(这是有效的,因为ASCII表顺序是
-
)。

当使用literal
]
在正则表达式的列表中,您应该将其作为第一个字符,否则解析器将无法理解它。但是,Java也接受转义,请参见下一段

对于Java,您需要使用
\
转义
[
,但您需要在Java中转义它以将其用作文本字符串,因此将
[
替换为
\[

这将使您的正则表达式工作:

text.matches("[]a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[^_`{|}~]");
text.matches(“[]a-zA-Z0-9!\”#$%&'()*+,-./:;?@\\[^ `{124;}~”;

另一点要注意的是,
,-。
匹配从逗号到点的间隔,如果这不是所需的行为,则将
-
移动到最后一个位置。(这是有效的,因为ASCII表顺序是
-
)。

当使用literal
]
在正则表达式的列表中,您应该将其作为第一个字符,否则解析器将无法理解它。但是,Java也接受转义,请参见下一段

对于Java,您需要使用
\
转义
[
,但您需要在Java中转义它以将其用作文本字符串,因此将
[
替换为
\[

这将使您的正则表达式工作:

text.matches("[]a-zA-Z0-9 !\"#$%&'()*+,-./:;<=>?@\\[^_`{|}~]");
text.matches(“[]a-zA-Z0-9!\”#$%&'()*+,-./:;?@\\[^ `{124;}~”;
另一点要注意的是,
,-。
匹配的是从逗号到点的间隔,如果这不是所需的行为,请将
-
移动到最后一个位置。(这是因为ASCII