找到所有不是正则表达式的字符

时间:2013-07-31 19:22:53

标签: python regex

假设我有法律字符的正则表达式

legals = re.compile("[abc]")

我可以在字符串中返回合法字符列表,如下所示:

finder = re.finditer(legals, "abcdefg")
[match.group() for match in finder]
>>>['a', 'b', 'c']

如何使用正则表达式查找正则表达式中不包含的字符列表?在我的情况下IE将返回

['d','e','f','g']

编辑:为了澄清,我希望在不修改正则表达式本身的情况下找到一种方法。

1 个答案:

答案 0 :(得分:6)

否定字符类:

>>> illegals = re.compile("[^abc]")
>>> finder = re.finditer(illegals, "abcdefg")
>>> [match.group() for match in finder]
['d', 'e', 'f', 'g']

如果你不能这样做(并且你只处理一个字符长度的匹配),你可以

>>> legals = re.compile("[abc]")
>>> remains = legals.sub("", "abcdefg")
>>> [char for char in remains]
['d', 'e', 'f', 'g']