我需要一个正则表达式来匹配一个字符串,只要它至少包含X个单词。
将单词定义为任何连续的非空白序列。
我正在使用re.findall()
。
答案 0 :(得分:3)
嗯,您可以使用字符类\S+
来指定一个单词。
\S
相当于[^\s]
,它本身等同于[^ \v\t\f\n\r]
(按我输入的顺序为:空格,垂直制表符,水平制表符,换页符,换行符,回车符)
[^ ... ]
表示一个否定的类,其中所有字符都将匹配,除了类中的那些字符。
现在,对于你想要做的事情,我宁愿像这样使用re.match
:
re.match(r'\s*\S+(?:\s+\S+){X-1,}', text_to_validate)
(?:\s+\S+)
匹配空格后跟一个单词。
{X-1,}
表示论坛(?:\s+\S+)
应至少出现X-1
次才能匹配。如果X = 4,则它变为{3,}
。
替代,分隔空格并计算元素数量:
re.split(r"\s+", text_to_validate)
答案 1 :(得分:-2)
import re
subject = """I need a regex to match a string only if it contains at least X words.
Where a word is defined as any continuous non-whitespace sequence.
I am using Python 3 and re.findall()"""
result = re.findall(r"([\S]+)", subject)
if len(result) > 5:
print "yes"
else:
print "no"