java - 正则表达式将多个数字与一行中的空格合并

标签 java regex

我需要一个正则表达式来合并一行中的多个数字,而不是将它们全部合并在一起。

示例行:

Hello World9.99 123 456.00 7 890 123.45 0.97

我想要的输出是:

Hello World9.99 123456.00 7890123.45 0.97

我知道基本的正则表达式,但对先行/后行没有经验。

到目前为止,我创建了这个方法:

final String regex = "(?<!\\.\\d{1,3})\\s+(?=\\d{1,3}\\.?\\d{2}?)";

public String mergeNumbers(String s){
    return s.replaceAll(regex, "");
}

如果与单词相关的数字有一个点,这就可以正常工作。

但我不知道如何匹配开头没有点的这一行:

Hello World99 123 456.00 7 890 123.45 0.97

这是返回:

Hello World99123456.00 7890123.45 0.97

但我想要:

Hello World99 123456.00 7890123.45 0.97

所以我的问题是:

如何修改我的正则表达式以匹配这两种情况?

最佳答案

我建议使用

.replaceAll("\\b(?<!\\.)(\\d+)\\s+(?=\\d)", "$1")

参见 regex demo .

详细信息:

  • \b - 单词边界
  • (?<!\.) - 不可能有 .就在当前位置之前
  • (\d+) - 第 1 组(用 $1 从字符串替换模式中引用):一个或多个数字
  • \s+ - 1+ 个空格
  • (?=\\d) - 当前位置的右边必须有一个数字。

关于java - 正则表达式将多个数字与一行中的空格合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132305/

相关文章:

java - 通过 Flume 将 API 数据传输到 hadoop

java - 如何在运动传感器检测到某些东西时打开屏幕?

python - 正则表达式匹配可选部分

javascript - 两个字符之间的子字符串

Javascript正则表达式捕获下一个单词

c# - 如何以编程方式将属性插入 .cs 源文件中的类?

java - getChildNodes() 在 XML 中为我的根返回 NULL

java - 尝试在 Java 中使用 List<> 时出现 "not generic"错误

java - 使用 JSONObject 解析 json 字符串以获取特定值

mysql - 如何在mysql中使用REGEXP选择结果,不包含字符串