1

可能重复:
Flex RegExp 到 Java RegExp

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

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

我收到的错误是:

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

1 回答 1

7

您需要转义文字大括号,除非它们在字符类中:

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

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

于 2012-10-24T06:20:49.737 回答