System.out.println(
"ISODate(\"333\")ISODate(\"333\")ISODate(\"333\")"
.replaceAll("ISODate\\(\".+\"\\)",
"ISODate(\"222\")"));
结果
ISODate("222")
如何更换所有日期?
答案 0 :(得分: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\")"));