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

时间:2017-01-17 03:48:47

标签: python regex

我试图查看一个字符串是否包含3个连续的单词(除以空格而没有数字),但我构造的正则表达式似乎不起作用:

print re.match('([a-zA-Z]+\b){3}', "123 test bla foo")
None

这应该返回true,因为该字符串包含3个单词" test bla foo"。

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

2 个答案:

答案 0 :(得分:6)

执行:

(?:[A-Za-z]+ ){2}[A-Za-z]+
  • (?:[A-Za-z]+ ){2}:未捕获的组(?:[A-Za-z]+ )匹配一个或多个字母字符,后跟空格,{2}匹配两个此类连续的组

  • [A-Za-z]+匹配前两个单词之后的一个或多个字母字符,制作第三个单词

Demo

如果你想要用任何空格而不是空格分隔单词:

(?:[A-Za-z]+\s){2}[A-Za-z]+

答案 1 :(得分:0)

我用它来选择字符串的第一个单词:

^(?:[^\ ]+\ ){3}

我使用空格来定义和定界每个单词。

[^\ ]+:除空格外,至少一个字符,后跟空格\。 在您不得不输入所需的单词数之后:{3}

效果很好。