我不知道为什么它不起作用..我正在使用java ..
...
String patternString = "([^{}]*{[^{}]+}[^{}])*";
Pattern p = Pattern.compile(patternString);
...
我收到的错误是:
Illegal repetition near index 4
([^{}]*{[^{}]+}[^{}]*)
答案 0 :(得分:7)
你需要转义文字括号,除非它们在一个字符类中:
String patternString = "([^{}]*\\{[^{}]+\\}[^{}])*";
大多数其他正则表达式都可以识别大括号何时不被用作重复运算符(如[0-9]{1,3}
中),因此会正确解析正则表达式。但Java坚持让这些括号逃脱。