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

Java正则表达式错误非法重复,java,regex,Java,Regex,可能重复: 我不知道为什么它不起作用。。我正在使用java ... String patternString = "([^{}]*{[^{}]+}[^{}])*"; Pattern p = Pattern.compile(patternString); ... 我收到的错误是: Illegal repetition near index 4 ([^{}]*{[^{}]+}[^{}]*) 除非文字大括号位于字符类内,否则需要对其进行转义: String patternString = "([

可能重复:

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

...
String patternString = "([^{}]*{[^{}]+}[^{}])*";
Pattern p = Pattern.compile(patternString);
...
我收到的错误是:

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

除非文字大括号位于字符类内,否则需要对其进行转义:

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

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

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

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

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

{
}
是元字符,在我的系统上,在索引6附近用“\\”将它们转义。
非法重复;)
{
}
是元字符,请使用“\\”将其转义。
在我的系统上索引6附近非法重复;)