有一个关于正则表达式的问题,并试图回答我发现了另一个奇怪的事情。在正则表达式中的奇怪行为
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'。 – Qtax 2012-02-10 13:54:56