繁体   English   中英

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

[英]How to search for occurrences of more than one space between words in a line

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

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

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

[ ]{2,}

空格(2个或更多)

您还可以检查这些空格前后是否有空格。 (不是其他空格,例如制表符或换行符)

\w[ ]{2,}\w

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

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

或看到空格前后都有什么,不仅是单词字符(空格除外)

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

简单的解决方案:

/\s{2,}/

这匹配所有出现的一个或多个空格字符。 如果您需要匹配整行,但前提是该行包含两个或多个连续的空格字符:

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

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

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

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

实际上,您可以省去括号,只是为了清楚起见(否则,重复的空格字符不太容易看到:))。

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

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

这是我的解决方案

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

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

  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB

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

\s+

python中的示例

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM