1

私はこのようなjson文字列を持っています:

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

そして、「name=」と「hobbies=」を削除して、次のパターンを使用したいと思います\w*\=(?={)。->editPadProを使用してテスト済み

ただし、Javaですべて置換を使用する場合:

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パーサーの使用を検討してください。

于 2012-07-17T08:39:31.940 に答える