簡體   English   中英

string.replaceAll Java不適用於環視正則表達式嗎?

[英]string.replaceAll java doesn't work with lookaround regex?

我有一個像這樣的json字符串:

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

我想刪除“ name =“和“ hobby” =”,以便使用以下模式: \\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*\=(?={)"

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

問候,

山姆

問題是{字符是正則表達式語法中的特殊字符,表示一個數字(例如\\d{2}表示2位數字)。 在您的情況下,您想要匹配文字{ ,這意味着您需要轉義 {字符,因此您需要將正則表達式更改為: "\\\\w*\\\\=(?=\\\\{)";

對我來說,這產生了:

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

java.util.regex.PatternSyntaxException: Illegal repetition

的出現是因為您在"\\\\w*\\\\=(?={)" 如您所知,“ {”和“}”是特殊字符,用於說明字符重復...

只需嘗試像"\\\\w*\\\\=(?=\\\\{)"那樣對其進行轉義即可。 並且由於您使用的是json,請考慮使用JSON-Parser,例如:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM