如何在一行中的单词之间搜索多个空格的出现
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,}$/
.*
通常是贪婪的,这意味着它将到达测试字符串的末尾,如果有强制字符,则后面的所有内容都不会匹配。通常在这种情况下,添加 ?
是一个很好的做法,例如 .*?
。使用 PHP 的 PCRE 发生在我身上
/^.*b.*$/
实际上匹配 "foobar"
,即使您希望第一个贪婪的 .*
已经匹配整个字符串。
此正则表达式选择所有空格,您可以使用它并将其替换为单个空格
\s+
python中的示例
result = re.sub('\s+',' ', data))
搜索 [ ]{2,}
。这将在行内的任何位置找到两个或更多相邻的空格。它还将匹配前导和尾随空格以及完全由空格组成的行。如果您不想这样,请查看亚历山大的答案。
实际上,您可以省略括号,它们只是为了清楚起见(否则重复的空格字符不是那么明显:))。
\s{2,}
的问题在于它还会匹配 Windows 文件上的换行符(其中换行符由 CRLF
或 \r\n
表示,由 \s
匹配。
CRLF
如果您还想查找多个制表符和空格,请使用 [ \t]{2,}
。
more than one space between words in a line
。单词之间的[ ]{2,}
如何?你甚至读过这个问题吗?
这是我的解决方案
[^0-9A-Z,\n]
这将删除所有数字、逗号和换行符,但选择中间空格,例如数据集
20171106,16632 ESCG0000018SB
20171107,280 ESCG0000018SB
20171106,70476 ESCG0000018SB
不定期副业成功案例分享
\w
表示“单词字符”,即字母数字和下划线,但不是其他非空格字符。要检查非空格,请使用\S
(大写 S)。此外,第一个将仅匹配包含两个或多个空格的行,而没有其他内容。\S
中所说的内容,我只是不想依赖字符大小写来实现此类功能,这样更易于阅读。\w[ ]{2,}\w
将无法匹配word.<2 spaces>more words
或完全由空格组成的字符串。[^\s]([ ]{2,})[^\s]\w
将在以空格或字符串开头的行(如bla<2 spaces>.
)上失败...{min,max}
运算符是 一般重复量词 和 2) 省略max
但离开逗号意味着无限重复。