正则表达式用逗号替换数字之间的空格

Regular expression to replace spaces between numbers with a comma

我在一个包含世界上每个国家/地区信息的大文件中列出了以下内容。

它们是温度数据的数组,有时空格的长度不同。

[23.5  26.3  29.3  31.9  32.8  31.2  28.8  27.8  28.4  29  26.6  23.7]

我正在尝试使用 sublime 编写正则表达式,但我无法理解它们。

到目前为止我得到的最接近的是:

( \S+)\(.+ )

如何编写一个正则表达式来替换如下行:

[23.8,25.5,27.2,28.3,29.3,29.5,28.7,28.1,28.2,28.9,27.2,24.4]

如有帮助将不胜感激。

**编辑 我正在使用 sublime text。

就这样:

(\d)\s+(\d)

并在替换中:

,

工作原理:

  1. (\d) - 找到一个数字并捕获它
  2. \s+ - 后面有一个或多个 space。
  3. (\d) - 然后是另一个数字并捕获它。

使用这些设置执行 "Replace All" 会变成这样:

[23.5  26.3  29.3  31.9  32.8  31.2  28.8  27.8  28.4  29  26.6  23.7]

进入:

[23.5,26.3,29.3,31.9,32.8,31.2,28.8,27.8,28.4,29,26.6,23.7]

请注意,如果您的数据文件中有任何其他地方有一个数字后跟一些白色 space 字符后跟另一个数字,则会受到影响。如果发生这种情况,还有其他方法可以对此进行改进,但需要查看其余数据的样本。而且,在某些时候,如果发生的事情太多,在不影响其他数据的情况下,尝试使用单个 RegEx 解决它可能是不可能的。

您可以使用这个:(?<=\d)\s+(?=\d|\-),在 sublime text 中使用查找和全部替换。

(?<=\d) 是正后视,它检查前一个符号是否是数字,而不实际匹配它。

(?=\d) 是一个积极的前瞻,同样的事情 - 检查后面的符号是否是数字,而不实际匹配它。

仅供参考,javascript 不支持后视,但这在本例中无关紧要。

https://regex101.com/r/qX1qF5/7 更容易摆弄它。