我试图查看一个字符串是否包含3个连续的单词(除以空格而没有数字),但我构造的正则表达式似乎不起作用:
print re.match('([a-zA-Z]+\b){3}', "123 test bla foo")
None
这应该返回true,因为该字符串包含3个单词" test bla foo"。
实现这一目标的最佳方法是什么?
答案 0 :(得分:6)
执行:
(?:[A-Za-z]+ ){2}[A-Za-z]+
(?:[A-Za-z]+ ){2}
:未捕获的组(?:[A-Za-z]+ )
匹配一个或多个字母字符,后跟空格,{2}
匹配两个此类连续的组
[A-Za-z]+
匹配前两个单词之后的一个或多个字母字符,制作第三个单词
如果你想要用任何空格而不是空格分隔单词:
(?:[A-Za-z]+\s){2}[A-Za-z]+
答案 1 :(得分:0)
我用它来选择字符串的第一个单词:
^(?:[^\ ]+\ ){3}
我使用空格来定义和定界每个单词。
[^\ ]+
:除空格外,至少一个字符,后跟空格\
。
在您不得不输入所需的单词数之后:{3}
效果很好。