簡體   English   中英

Json,正則表達式,Java。 如何僅替換子字符串的一種出現

[英]Json, regex, java. How to replace only one occurency of the substring

假設我們有這樣的字符串

 {"className":"first","i":0,"name":null}

如何將其轉換為:

 {"className":"second","i":0,"name":null}

我有這個:

///Initialy className is a className in lower Case (for example "first")
 className = "\"className\":\""+className+"\",";

 string.replaceAll( "\"className\":\".+\"" ,className); 

但是它給出:

  {"className":"second",:null}

您的正則表達式中包含".+" +是一個“貪婪”量詞,這意味着.+將匹配的字符的最大可能數量。 因此,匹配器將一直查找到可能的最遠引號。 相反,如果您想匹配最小數量的字符,請添加? 在量詞之后,即

string.replaceAll( "\"className\":\".+?\"" ,className); 

在Java中,這稱為“勉強”限定符。 (我也看到過它叫其他名字。)

我同意正則表達式不是解決此問題的最佳方法的評論。

在下面的語句中替換string.replaceAll(“ \\” className \\“:\\”。+ \\“”,className);

使用string.replaceAll(“ \\” className \\“:\\”。+ \\“” +“,”,className);

它給。

{“ className”:“ second”,“ i”:0,“ name”:null}

暫無
暫無

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

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