1

正当な文字の正規表現があるとしましょう

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

次のような文字列で有効な文字のリストを返すことができます。

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

正規表現にない文字のリストを見つけるために正規表現を使用するにはどうすればよいですか? IE私の場合、それは返されます

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

編集:明確にするために、正規表現自体を変更せずにこれを行う方法を見つけたいと思っています。

4

1 に答える 1

6

文字クラスを否定します。

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

それができない場合 (そして、1 文字の長さの一致しか扱っていない場合)、次のことができます。

>>> legals = re.compile("[abc]")
>>> remains = legals.sub("", "abcdefg")
>>> [char for char in remains]
['d', 'e', 'f', 'g']
于 2013-07-31T19:24:39.617 に答える