Java正则表达式:仅删除数字间的空格

5

我有一些字符串,例如:

String a = "Hello 12 2 3 4 45th World!";

我想要将数字连接起来,例如:"Hello 12234 45th World"
通过尝试 a.replaceAll("(?<=\\d) +(?=\\d)", ""),我得到了以下结果:"Hello 1223445th World"
是否有办法只将数字连接在一起,而不是数字+th
2个回答

3

1
@YangQian foo1 2 3.前面的空格也应该删除吗? - Pshemo

2
你只需要在正向预查中添加一个单词边界,就可以只匹配整个数字:

单词边界

a.replaceAll("(?<=\\d) +(?=\\d+\\b)", ""))

IDEONE上的示例代码:

String a = "Hello 12 2 3 4 45th World!";
System.out.println(a.replaceAll("(?<=\\d) +(?=\\d+\\b)", ""));

输出:

Hello 12234 45th World!

2
当我尝试在字符串中删除数字之间的空格时,它会失败,如下所示:Hello 12 2 3 4 45 World! - Yang Qian
1
修正后,只需添加 + 即可。System.out.println("Hello 12 2 3 4 45 World!".replaceAll("(?<=\\d) +(?=\\d+\\b)", "")); --> Hello 1223445 World!。在前瞻中,我们可以使用 +,因为它们不是固定宽度的,与后顾相反。 - Wiktor Stribiżew
@YangQian:请检查我的更新代码。我相信这是你在这里所需要的全部。我的正则表达式将处理像“Text 234 34 35 5,text”或“4566 45676 55 5.”这样的情况,而vks则不会。 - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接