[英]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.