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

时间:2010-09-21 09:11:02

标签: regex eclipse replace

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

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

以上所有都是此正则表达式的有效匹配项。我应该使用什么样的正则表达式?

5 个答案:

答案 0 :(得分:141)

[ ]{2,}

SPACE(2或更多)

您还可以检查这些空格之前和之后的字词。 (不是像制表符或新行那样的其他空格)

\w[ ]{2,}\w

同样,但你也可以选择(捕获)任务的空间,如替换

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

或者看到空格之前和之后有什么东西,不仅仅是单词字符(空格除外)

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

答案 1 :(得分:9)

简单的解决方案:

/\s{2,}/

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

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

如果空格不需要连续:

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

答案 2 :(得分:4)

搜索[ ]{2,}。这将在线内的任何位置找到两个或更多相邻空格。它还将匹配前导和尾随空格以及完全由空格组成的行。如果您不想这样,请查看亚历山大的答案。

实际上,你可以省略括号,它们只是为了清晰起见(否则重复的空格字符不是那么明显:))。

\s{2,}的问题在于它还会匹配Windows文件中的换行符(其中换行符由CRLF\r\n表示,其匹配为\s{2}

如果您还想查找多个标签和空格,请使用[ \t]{2,}

答案 3 :(得分:2)

这是我的解决方案

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

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

的数据集
  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB

答案 4 :(得分:0)

此正则表达式选择所有空格,您可以使用此空格并将其替换为单个空格

\s+

python中的示例

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