Python 2.7 除了字符集之外的Python正则表达式匹配

Python 2.7 除了字符集之外的Python正则表达式匹配,python-2.7,regex-negation,Python 2.7,Regex Negation,我正在尝试查找字符串中不是c、I、k、m、o或v的所有字符。我目前使用的正则表达式模式是[abd-hjlnp-wx-z] 我想知道我是否可以做一些像[a-z而不是[cikmov]]的事情。我使用的是Python2.7。您可以在这里使用负字符类。以\W开头(不是一个单词);否定,表示所有单词字符,但您可以添加所有例外: [^\W_0-9cikmov] [^…]是一个负字符类,类中的所有内容必须不匹配。对于\W,这意味着任何不在a-z、a-z、0-9或和下划线范围内的内容都将匹配,^反转,因此我们

我正在尝试查找字符串中不是c、I、k、m、o或v的所有字符。我目前使用的正则表达式模式是
[abd-hjlnp-wx-z]


我想知道我是否可以做一些像[a-z而不是[cikmov]]的事情。我使用的是Python2.7。

您可以在这里使用负字符类。以
\W
开头(不是一个单词);否定,表示所有单词字符,但您可以添加所有例外:

[^\W_0-9cikmov]
[^…]
是一个负字符类,类中的所有内容必须不匹配。对于
\W
,这意味着任何不在a-z、a-z、0-9或和下划线范围内的内容都将匹配,
^
反转,因此我们现在匹配所有字母、数字和下划线

为此,我们添加了数字和下划线,因此现在它只与字母再次匹配。然后添加例外,它将只匹配除c、i、k、m、o或v之外的所有字母。大写版本仍然匹配,除非您使正则表达式不区分大小写

演示:

除了您的例外,所有字母都匹配。

它必须使用正则表达式吗?如果不是,则提供一个简单的基于字符串的解决方案:

string = "the quick brown fox jumps over the lazy dog"

print [c for c in string if 'a' <= c.lower() <= 'z' and c not in 'cikmov']

# prints ['t', 'h', 'e', 'q', 'u', 'b', 'r', 'w', 'n', 'f', 'x', 'j', 'u', 'p', 's', 'e', 'r', 't', 'h', 'e', 'l', 'a', 'z', 'y', 'd', 'g']
string=“敏捷的棕色狐狸跳过了懒狗”
如果为“a”,则以字符串形式打印[c]
string = "the quick brown fox jumps over the lazy dog"

print [c for c in string if 'a' <= c.lower() <= 'z' and c not in 'cikmov']

# prints ['t', 'h', 'e', 'q', 'u', 'b', 'r', 'w', 'n', 'f', 'x', 'j', 'u', 'p', 's', 'e', 'r', 't', 'h', 'e', 'l', 'a', 'z', 'y', 'd', 'g']