string.replaceAll java不能与lookaround正则表达式一起使用?

时间:2012-07-17 08:31:10

标签: java regex string replaceall

我有一个像这样的json字符串:

string = "{name={first=sam, last=vo}, hobbies={hobby1=football, hobby2=swimming}}"

我想删除“name =”和“hobbies =”,以便我使用此模式:\w*\=(?={) - >使用editPadPro进行测试

但是,当我在java中使用replace all:

String pattern = "\\w*\\=(?={)";
String removedParent = string.replaceAll(pattern, "");

我收到此错误消息

"Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 7
\w*\=(?={)"

你可以给我一些建议吗?

此致

萨姆

2 个答案:

答案 0 :(得分:4)

问题是{字符是正则表达式语法中的特殊字符,表示金额(例如\d{2}表示2位数)。在您的情况下,您希望匹配文字{,这意味着您需要转义 {字符,因此您需要将正则表达式更改为:{{1 }}

对我来说,这产生了:

  

{{first = sam,last = vo},{hobby1 = football,hobby2 = swimming}}

答案 1 :(得分:1)

java.util.regex.PatternSyntaxException: Illegal repetition

是因为"\\w*\\=(?={)"中的“{”。 “{”和“}”是用于表示字符重复的特殊字符,如您所知......

尝试像"\\w*\\=(?=\\{)"那样逃避它。因为您正在使用json,请考虑使用JSON-Parser,如: