gpt4 book ai didi

Java String.replaceAll 不替换并发重复序列

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:53 24 4
gpt4 key购买 nike

我正在尝试使用 String.replaceAll 从字符串中删除一些空格。但是,当正则表达式模式的多个并发实例出现在字符串中时,只会替换第二个实例。

非常简单的例子:

String theString = "foo x x x x x bar";        
String trimmed = theString.replaceAll("x\\s*x", "xx");
System.out.println(theString);
System.out.println(trimmed);

我想看到的:

foo x x x x x bar
foo xxxxx bar

我看到的:

foo x x x x x bar
foo xx xx x bar

似乎 replaceAll 没有将替换文本视为被替换的候选者,而是愉快地向前跳过。

有没有简单的解决方法?

最佳答案

问题是你匹配空格后的x;因此,在你的第一场比赛之后,你匹配:

foo x x x x x bar
^
|---- HERE

你不想吞下它;你必须使用前瞻:

.replaceAll("x\\s+(?=x)", "x");

您甚至可以同时进行前瞻和后视:

.replaceAll("(?<=x)\\s+(?=x)", "");

(请注意,* 量词已替换为 +;它允许不匹配没有空格字符的地方,在这种情况下您不想无论如何都要替换)

关于Java String.replaceAll 不替换并发重复序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com