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

时间:2015-10-26 09:57:00

标签: java regex

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

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

我该如何解决?

1 个答案:

答案 0 :(得分:5)

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

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

所以,使用

([ {;])

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