正则表达式:匹配3个连续的单词

Sub*_*beh 3 python regex

我试图看一个字符串是否包含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".

实现这一目标的最佳方法是什么?

hee*_*ayl 7

做:

(?:[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)