我尝试查看一个字符串是否包含3个连续的单词(由空格分隔,没有数字),但我构造的正则表达式似乎不起作用:
print re.match('([a-zA-Z]+\b){3}', "123 test bla foo") None
这应该返回true,因为字符串包含3个单词“test bla foo”。实现这一目标的最佳方法是什么?
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]+
unftdfkk2#
我用这个来选择一个字符串的第一个单词:
^(?:[^\ ]+\ ){3}
我用空格来定义和分隔每个单词。[^\ ]+:最少一个字符(空格除外),后跟一个空格\。之后,您只需输入所需的字数:{3}效果很好。
[^\ ]+
\
{3}
zrfyljdw3#
这是更好的选择。它包括带连字符或撇号的单词,如“don 't”或“mother-in-law”
([^\s]+ ){2}[^\s]+
3条答案
按热度按时间hujrc8aj1#
应执行:
(?:[A-Za-z]+ ){2}
:未捕获的组(?:[A-Za-z]+ )
匹配一个或多个字母字符后跟空格,{2}
匹配两个这样的连续组[A-Za-z]+
匹配前两个单词后的一个或多个字母字符,使第三个单词Demo
如果希望单词之间使用任何空格而不是空格分隔:
unftdfkk2#
我用这个来选择一个字符串的第一个单词:
我用空格来定义和分隔每个单词。
[^\ ]+
:最少一个字符(空格除外),后跟一个空格\
。之后,您只需输入所需的字数:{3}
效果很好。
zrfyljdw3#
这是更好的选择。
它包括带连字符或撇号的单词,如“don 't”或“mother-in-law”