2016-09-19 97 views

回答

3

".+"是貪婪的,匹配雙引號和匹配下一個雙引號前的最長匹配。

可以使用非貪婪匹配:

System.out.println(
"ISODate(\"333\")ISODate(\"333\")ISODate(\"333\")" 
.replaceAll("ISODate\\(\".+?\"\\)", 
    "ISODate(\"222\")")); 

或者性能更好的否定字符類:

System.out.println(
"ISODate(\"333\")ISODate(\"333\")ISODate(\"333\")" 
.replaceAll("ISODate\\(\"[^\"]+\"\\)", 
    "ISODate(\"222\")")); 
相關問題