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/

10-13 01:38