2

我有一个正则表达式,但它非常大。我指定了我允许的字符集。这使它成为大的正则表达式。如果我可以指定相反的内容会更简单,即只指定我不接受的字符吗?

^[^\|\^~]*$

但它不起作用。有什么线索吗?

4

2 回答 2

3

这匹配在任何地方不包含这三个字符的字符串:

^[^|^~]*$

虽然这匹配在任何地方包含这三个中的任何一个的所有字符串:

[|^~]

这两种模式是等价的,所以你可以使用第一种,也可以使用第二种。

于 2010-11-27T19:24:04.637 回答
1

你不能逃跑|~[]. 使用^[^|^~]*$.

>>> re.match(r'^[^|^~]*$', 'abc')
<_sre.SRE_Match object at 0x2dbc4a8>
>>> re.match(r'^[^|^~]*$', '^')
>>> re.match(r'^[^|^~]*$', '|')
>>> re.match(r'^[^|^~]*$', '~')

即第一个示例匹配,其他三个按要求失败。

于 2010-11-27T19:19:25.230 回答