gpt4 book ai didi

java - 替换字符串中正则表达式匹配的空白区域

转载 作者:行者123 更新时间:2023-11-29 10:02:44 25 4
gpt4 key购买 nike

我一直在努力解决这个问题。我有一个有模式的字符串。例如。

CW1234 has been despatched to CW334545 

即字符串可以有以 CW 开头的模式,后跟任意数量的整数(最多 16)。

我想用一个空字符替换所有这些模式。这样字符串看起来像

has been despatched to

我尝试了以下方法,但它只替换了 CW 后面的第一个数字。我对java很陌生。任何见解都会有很大帮助。

if(Pattern.matches(".*[C][W][0-9].*", str1)) {
Matcher m = Pattern.compile(".*[C][W][0-9].*").matcher(str1);

while(m.find()) {
str1 = str1.replaceAll("[C][W][0-9]", "");
}
}

System.out.println(str1);

最佳答案

您需要在数字上使用 {n,m} 量词,以强制最大数字。此外,为了更换目的,您无需事先检查图案是否存在。 replaceAll 仅当存在匹配模式时才会替换,否则将保持原样。

因此,删除所有那些 PatternMatcher 部分,并将您的正则表达式更改为:

str1 = str1.replaceAll("CW\\d{0,16}", "");

如果您想要至少 1 位数字,则将其设为 {1,16}。无需将 CW 放在不同的字符类中。具有单个字符的字符类与该字符本身一样好(假设它不是特殊字符)。此外,您可以使用 \\d 而不是 [0-9]

关于java - 替换字符串中正则表达式匹配的空白区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954476/

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