1

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

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

我想删除“name=”和“hobbies=”,所以我使用这个模式:\w*\=(?={)->tested using 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*\=(?={)"

你能给我一些建议来完成这项工作吗?

问候,

山姆

4

2 回答 2

4

问题是该{字符是正则表达式语法中的一个特殊字符,它表示一个数量(例如\d{2}表示 2 个数字)。在您的情况下,您想要匹配文字{,这意味着您需要转义{字符,因此您需要将您的正则表达式更改为:"\\w*\\=(?=\\{)";

对我来说,这产生了:

{{first=sam, last=vo}, {hobby1=足球, hobby2=游泳}}

于 2012-07-17T08:36:02.350 回答
1
java.util.regex.PatternSyntaxException: Illegal repetition

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

试着像那样逃避它"\\w*\\=(?=\\{)"。并且由于您正在使用 json ,请考虑使用 JSON-Parser,例如:

于 2012-07-17T08:39:31.940 回答