System.out.println(
"ISODate(\"333\")ISODate(\"333\")ISODate(\"333\")"
.replaceAll("ISODate\\(\".+\"\\)",
"ISODate(\"222\")"));
结果
ISODate("222")
如何替换所有日期?
最佳答案
".+"
是贪婪的,它将匹配双引号,然后匹配最长的匹配项,然后再匹配下一个双引号。
您可以使用非贪婪匹配:
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\")"));
关于java - 如何用前缀和后缀的正则表达式替换所有出现的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39575427/