相关疑难解决方法(0)

String.replaceAll(regex)进行两次相同的替换

谁能告诉我为什么

System.out.println("test".replaceAll(".*", "a"));
Run Code Online (Sandbox Code Playgroud)

结果是

aa
Run Code Online (Sandbox Code Playgroud)

请注意,以下结果相同:

System.out.println("test".replaceAll(".*$", "a"));
Run Code Online (Sandbox Code Playgroud)

我已经在java 6和7上测试了它,两者似乎都表现得一样.我错过了什么或者这是java正则表达式引擎中的错误吗?

java regex

41
推荐指数
1
解决办法
1742
查看次数

正则表达式中的奇怪行为

有一个关于正则表达式的问题并试图回答我发现了另一个奇怪的事情.

String x = "X";
System.out.println(x.replaceAll("X*", "Y"));
Run Code Online (Sandbox Code Playgroud)

这打印YY.为什么??

String x = "X";
System.out.println(x.replaceAll("X*?", "Y"));
Run Code Online (Sandbox Code Playgroud)

这打印YXY

为什么不情愿的正则表达式与'X'字符不匹配?有"noting"X"nothing"但为什么首先不匹配三个符号并匹配两个然后一个而不是三个?和第二个正则表达式只匹配"nothing"s而不是X

java regex regex-greedy

4
推荐指数
1
解决办法
145
查看次数

标签 统计

java ×2

regex ×2

regex-greedy ×1