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

Oli*_*xon 4 regex sublimetext

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

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

[23.5  26.3  29.3  31.9  32.8  31.2  28.8  27.8  28.4  29  26.6  23.7]
Run Code Online (Sandbox Code Playgroud)

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

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

( \S+)\(.+ )
Run Code Online (Sandbox Code Playgroud)

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

[23.8,25.5,27.2,28.3,29.3,29.5,28.7,28.1,28.2,28.9,27.2,24.4]
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感谢。

**编辑我正在使用 Sublime Text。

And*_*sts 6

您可以使用此:(?<=\d)\s+(?=\d|\-),在 Sublime Text 中使用查找和替换所有内容。

(?<=\d)是一个积极的lookbehind,它检查前一个符号是否是数字,而不实际匹配它。

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

仅供参考,javascript 不支持lookbehinds,但在本例中这并不重要。

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


Ala*_*ith 5

做就是了:

(\d)\s+(\d)
Run Code Online (Sandbox Code Playgroud)

并在替换中:

$1,$2
Run Code Online (Sandbox Code Playgroud)

正则表达式答案

怎么运行的:

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

使用这些设置执行“全部替换”会变成这样:

[23.5  26.3  29.3  31.9  32.8  31.2  28.8  27.8  28.4  29  26.6  23.7]
Run Code Online (Sandbox Code Playgroud)

进入:

[23.5,26.3,29.3,31.9,32.8,31.2,28.8,27.8,28.4,29,26.6,23.7]
Run Code Online (Sandbox Code Playgroud)

请注意,如果数据文件中的任何其他位置有一个数字,后跟一定数量的空格字符,后跟另一个数字,该数字也会受到影响。如果发生这种情况,还有其他方法可以改进这一点,但需要查看其余数据的样本。而且,在某些时候,如果发生的事情太多,尝试使用单个正则表达式解决它而不影响其他数据可能是不可能的。