为什么这个正则表达式不接受'{'?

Aym*_*ney 0 java regex

当我尝试将这个"(| {|;)"正则表达式转换为字符串时,Java给了我这个例外:

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2
( |{|;)
  ^
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Wik*_*żew 5

错误是将{其视为限制量词的开始(例如{1,2}).您需要转义它或在字符类中使用.

从正则表达式判断( |{|;)- 问题在于特殊的正则表达式字符处理.由于您要匹配空格,左大括号或分号,建议使用字符类而不是替换组.

所以,使用

([ {;])
Run Code Online (Sandbox Code Playgroud)

字符类是更好的解决方案,因为它涉及更少的回溯.