我想要一个正则表达式,它将匹配长度大于0(.+
)的所有字符串,但不匹配字符串:"%"
,即包含%
的长度为1的字符串。< / p>
答案 0 :(得分:5)
测试单字符'%'
字符串会更加 更便宜:
if inputstring and inputstring != '%':
不需要正则表达式。上面的表达式测试字符串是否包含至少一个字符,并且不完全等于'%'
。
如果必须使用正则表达式,则匹配长度为1的负字符集.
,长度为2及以上:
r'^(?:[^%]|.{2,})$'
如果不是 %
,则匹配1个字符;如果字符串长度为2或更长,则匹配任何字符。
演示:
>>> import re
>>> no_percentage = re.compile(r'^(?:[^%]|.{2,})$')
>>> no_percentage.search('')
>>> no_percentage.search('%')
>>> no_percentage.search('%1')
<_sre.SRE_Match object at 0x10f374370>
>>> no_percentage.search('1')
<_sre.SRE_Match object at 0x10f3743d8>
答案 1 :(得分:4)
这个正则表达式适用于你r'^([^%] |。{2,}} $'
正则表达式的解释
但是再次如上所述,平等检查应该更好更清洁。