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

u5rb5r59  于 2022-12-14  发布在  其他
关注(0)|答案(3)|浏览(244)

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

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

这应该返回true,因为字符串包含3个单词“test bla foo”。
实现这一目标的最佳方法是什么?

hujrc8aj

hujrc8aj1#

应执行:

(?:[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]+
unftdfkk

unftdfkk2#

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

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

我用空格来定义和分隔每个单词。
[^\ ]+:最少一个字符(空格除外),后跟一个空格\。之后,您只需输入所需的字数:{3}
效果很好。

zrfyljdw

zrfyljdw3#

这是更好的选择。
它包括带连字符或撇号的单词,如“don 't”或“mother-in-law”

([^\s]+ ){2}[^\s]+

相关问题