2012-07-17 38 views
1

我有一個JSON字符串是這樣的:string.replaceAll java不能用於lookaround正則表達式?

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

而且我要刪除「NAME =」和「愛好=」,所以我用這個模式:\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*\=(?={)" 

您能否給我一些建議來完成這項工作?

問候,

薩姆

+1

你想刪除其他的名字,如「第一=,最後=,hobby1 =,hobby2 =「還是隻有頂級名字? – 18bytes 2012-07-17 08:33:55

+1

退出'{'。 – 2012-07-17 08:35:53

回答

4

的問題是,所述{字符是在正則表達式語法一個特殊字符,其表示的量(例如\d{2}表示2位)。在你的情況下,你想要匹配字面{,這意味着你需要轉義{字符,所以你需要改變你的正則表達式爲:"\\w*\\=(?=\\{)";

對於我來說,這產生了:

{{第一= SAM,最後= VO},{hobby1 =足球,hobby2 =游泳}}

1
java.util.regex.PatternSyntaxException: Illegal repetition 

來,因爲你的「{」在"\\w*\\=(?={)"。 「{」和「}」是特殊字符來表示字符重複,因爲你可能知道...

只是試圖逃避它像那樣"\\w*\\=(?=\\{)"。因爲你正在使用JSON工作,請考慮使用JSON解析器,如: