正则表达式用逗号替换数字之间的空格
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)
并在替换中:
,
工作原理:
(\d)
- 找到一个数字并捕获它
\s+
- 后面有一个或多个 space。
(\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 更容易摆弄它。
我在一个包含世界上每个国家/地区信息的大文件中列出了以下内容。
它们是温度数据的数组,有时空格的长度不同。
[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)
并在替换中:
,
工作原理:
(\d)
- 找到一个数字并捕获它\s+
- 后面有一个或多个 space。(\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 更容易摆弄它。