Java Regex仅删除数字之间的空格

Java Regex仅删除数字之间的空格,java,android,regex,Java,Android,Regex,我只需要删除数字之间的空格,这样字符串如下: "Hello 111 222 333 World!" 变成 "Hello 111222333 World!" 我试过这个: message = message.replaceAll("[\\d+](\\s+)[\\d+]", ""); 似乎无法完成此操作。您可以使用此基于查找的正则表达式: String repl = "Hello 111 222 333 World!".replaceAll("(?<=\\d) +(?=\\d)", "

我只需要删除数字之间的空格,这样字符串如下:

"Hello 111 222 333 World!"
变成

"Hello 111222333 World!"
我试过这个:

message = message.replaceAll("[\\d+](\\s+)[\\d+]", "");

似乎无法完成此操作。

您可以使用此基于查找的正则表达式:

 String repl = "Hello 111 222 333 World!".replaceAll("(?<=\\d) +(?=\\d)", "");
 //=> Hello 111222333 World!
String repl=“Hello 111 222 333 World!”.replaceAll((?如何:

message = "Hello 111 222 333 World!".replaceAll("(\\d)\\s(\\d)", "$1$2");
给出:

"Hello 111222333 World!"

这个过程是做什么的?@stmfunk试图通过将所有号码重新格式化为单一格式来提取电话号码,然后将其提取出来。是的,这也会起作用,我认为lookarounds的性能与捕获的组相当。但我认为这个问题不是关于在这两种方法上运行性能基准,我可以编辑我的答案包括这个选项,但现在其他答案已经涵盖了它,我将保持原样。当然,有些地方环顾四周的方法可以工作,但捕获方法不能。无论如何,我的观点主要是性能是(waves hands)对于大多数目的来说,这已经足够了。但是正如您在这里看到的:
http://regex101.com/r/zL6yH3
使用
(\\d)(\\d)
(\\d)+(?=\\d)不能变成
123
并替换为
$1
也可以吗?如果想要避免后面的表情,请注意,如果紧跟在数字后面的单词也以数字开头,则处理不正确-“Hello 111 222 333 20World”变为“Hello 11122233320World”。为此,模式应为
(?对于不支持环视的正则表达式引擎,这是一个很好的解决方案。在某些情况下,必须运行此函数两次才能替换所有出现的情况。