我试图看一个字符串是否包含3个连续的单词(除以空格而没有数字),但我构造的正则表达式似乎不起作用:
print re.match('([a-zA-Z]+\b){3}', "123 test bla foo")
None
Run Code Online (Sandbox Code Playgroud)
这应该返回true,因为该字符串包含3个单词"test bla foo".
实现这一目标的最佳方法是什么?
做:
(?:[A-Za-z]+ ){2}[A-Za-z]+
Run Code Online (Sandbox Code Playgroud)
(?:[A-Za-z]+ ){2}:非捕获组(?:[A-Za-z]+ )匹配一个或多个字母字符后跟空格,{2}匹配两个这样的连续组
[A-Za-z]+ 匹配前两个单词之后的一个或多个字母字符,形成第三个单词
如果您希望单词由任何空格而不是空格分隔:
(?:[A-Za-z]+\s){2}[A-Za-z]+
Run Code Online (Sandbox Code Playgroud)