繁体   English   中英

Python正则表达式用于匹配除给定字符串以外的所有字符串

[英]Python regex for matching all strings except a given string

我想要一个正则表达式,它将匹配所有长度大于0( .+ )的字符串,但不匹配字符串: "%"即长度为1的字符串,其中包含%

仅测试一个字符的'%'字符串会便宜很多

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>

这个正则表达式应该为您工作r'^([^%] |。{2,})$'
正则表达式的说明

  • ^-强制表达式从头开始匹配
  • ([^%] |。{2,})-[^%]部分匹配一个不等于'%'的单个字符,而部分。{2,}表示由2个或更多长度组成的字符串字符。 “ |” sign强制该字符串是两者之一。
  • $-强制表达式匹配到最后一个元素

但是话又说回来,平等检查应该更好,更清洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM