我有一个正则表达式,但它非常大。我指定了允许的字符集。 这使它成为一个很大的正则表达式。如果我可以指定相反的方式,即只指定我不接受的字符,那会更简单吗?
^[^\|\^~]*$
但它不起作用。任何线索?
答案 0 :(得分:3)
这匹配任何地方不包含这三个字符的字符串:
^[^|^~]*$
虽然这匹配了包含任何三个字符串的所有字符串:
[|^~]
这两种模式是等价的,所以你可以使用第一种模式,也可以使用第二种模式进行否定。
答案 1 :(得分:1)
您不得在|
内逃避~
或[]
。使用^[^|^~]*$
。
>>> re.match(r'^[^|^~]*$', 'abc')
<_sre.SRE_Match object at 0x2dbc4a8>
>>> re.match(r'^[^|^~]*$', '^')
>>> re.match(r'^[^|^~]*$', '|')
>>> re.match(r'^[^|^~]*$', '~')
即。第一个示例匹配,其他三个示例根据需要失败。