正则表达式匹配字符串与最小字数

时间:2013-12-17 10:45:04

标签: python regex python-3.x

我需要一个正则表达式来匹配一个字符串,只要它至少包含X个单词。

将单词定义为任何连续的非空白序列。

我正在使用re.findall()

2 个答案:

答案 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,}

ideone demo


替代,分隔空格并计算元素数量:

re.split(r"\s+", text_to_validate)

ideone demo

答案 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"

http://labs.codecademy.com/