【发布时间】:2012-03-02 23:10:04
【问题描述】:
有一个关于正则表达式的问题,试图回答我发现了另一个奇怪的事情。
String x = "X";
System.out.println(x.replaceAll("X*", "Y"));
这将打印 YY。为什么??
String x = "X";
System.out.println(x.replaceAll("X*?", "Y"));
这会打印 YXY
为什么不情愿的正则表达式不匹配“X”字符?有"noting"X"nothing" 但为什么首先不匹配三个符号并匹配两个然后一个而不是三个?第二个正则表达式仅匹配 "nothing"s 而不是 X?
【问题讨论】:
-
在 Perl/PCRE 中用
X*?替换将导致YYY。
标签: java regex regex-greedy