Java正则表达式错误非法重复

时间:2012-10-24 06:18:32

标签: java regex

  

可能重复:
  Flex RegExp to Java RegExp

我不知道为什么它不起作用..我正在使用java ..

...
String patternString = "([^{}]*{[^{}]+}[^{}])*";
Pattern p = Pattern.compile(patternString);
...

我收到的错误是:

Illegal repetition near index 4
([^{}]*{[^{}]+}[^{}]*)

1 个答案:

答案 0 :(得分:7)

你需要转义文字括号,除非它们在一个字符类中:

String patternString = "([^{}]*\\{[^{}]+\\}[^{}])*";

大多数其他正则表达式都可以识别大括号何时不被用作重复运算符(如[0-9]{1,3}中),因此会正确解析正则表达式。但Java坚持让这些括号逃脱。