如果整个字符串至少包含一个字母,则将其与空格匹配

时间:2015-10-14 17:19:03

标签: python regex string python-2.7

我需要一个与包含字母,数字,一些特殊字符和空格的字符串匹配的RegEx。但是,RegEx必须拒绝仅由空格组成的字符串。 我创建了一个模式,但它不起作用。

import re

pattern = r"^[/<>'\.\,\-\?\[\] \w\d]+$"

print bool(re.match(pattern, "Hi, how are you?"))
print bool(re.match(pattern, "Hi, how are you? &*() "))
print bool(re.match(pattern, " "))

这是前一个代码段的输出:

True
False
True

我需要第三次测试失败,因为第二次测试失败了。 我知道我可以使用的不仅仅是e正则表达式,但我想知道是否只能使用正则表达式。 感谢

2 个答案:

答案 0 :(得分:3)

您可以在正则表达式中使用否定前瞻:

patter = r"^(?!\s*$)[<>'.,?\[\] \w\d-]+$"
如果输入只有0或更多空格,

(?!\s*$)是使比赛失败的负面预测。

<强>测试

>>> print bool(re.match(patter, " "))
False

答案 1 :(得分:0)

你也可以使用积极的前瞻

^(?=.*\S)[<>'.,?\[\] \w\d-]+$

这使得字符串中必须包含\S或非空格字符。