如何用前缀和后缀上的regexp替换所有出现的?

时间:2016-09-19 14:17:49

标签: java regex

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

结果

ISODate("222")

如何更换所有日期?

1 个答案:

答案 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\")"));