我需要一个与包含字母,数字,一些特殊字符和空格的字符串匹配的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正则表达式,但我想知道是否只能使用正则表达式。 感谢
答案 0 :(得分:3)
您可以在正则表达式中使用否定前瞻:
patter = r"^(?!\s*$)[<>'.,?\[\] \w\d-]+$"
如果输入只有0或更多空格, (?!\s*$)
是使比赛失败的负面预测。
<强>测试强>
>>> print bool(re.match(patter, " "))
False
答案 1 :(得分:0)
你也可以使用积极的前瞻
^(?=.*\S)[<>'.,?\[\] \w\d-]+$
这使得字符串中必须包含\S
或非空格字符。