如何搜索一行中单词之间出现的多个空格

如何搜索一行中单词之间出现的多个空格

1. this is a line containing  2 spaces
2. this is a line containing   3 spaces
3. this is a line containing multiple spaces first  second   three   four

以上所有内容都与这个正则表达式匹配有效。我应该使用哪个正则表达式?

245927 次浏览
[ ]{2,}

空间(2个或以上)

您还可以检查那些空格单词之前和之后(而不是其他空格,如制表符或新行)

\w[ ]{2,}\w

相同,但是您也可以只选择(捕获)用于替换等任务的空间

\w([ ]{2,})\w

或者看到空格之前和之后有任何东西,不仅仅是字符(除了空格)

[^\s]([ ]{2,})[^\s]

简单的解决办法:

/\s{2,}/

这匹配一个或多个空格字符的所有匹配项。 如果需要匹配整行,但仅当它包含两个或多个连续的空格字符时:

/^.*\s{2,}.*$/

如果空格不需要是连续的:

/^(.*\s.*){2,}$/

搜索 [ ]{2,}。这将发现两个或多个相邻的空间在任何地方的线。它还将匹配前导空格和尾随空格以及完全由空格组成的线条。如果你不想这样,看看亚历山大的回答。

实际上,您可以省略方括号,它们只是为了清晰起见(否则正在重复的空格字符不太可见:)。

\s{2,}的问题在于它也会匹配 Windows 文件中的换行符(换行符由 CRLF\r\n表示,\s{2}则与之匹配)。

如果还希望查找多个选项卡和空格,请使用 [ \t]{2,}

这是我的解决办法

[^0-9A-Z,\n]

这将删除所有的数字,逗号和新的行,但选择中间的空间,如数据集

  • 20171106,16632 ESCG0000018SB
  • 2017年1107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB

这个正则表达式选择所有的空格,您可以使用它并用一个空格替换它

\s+

在 python 中的例子

result = re.sub('\s+',' ', data))