我正在尝试查找字符串中所有不是 c、i、k、m、o 或 v 的字符。我目前使用的正则表达式模式是 [abd-hjlnp-wx-z]
。
我想知道我是否可以做类似 [a-z 而不是 [cikmov]] 的事情。我正在使用 python 2.7。
最佳答案
您可以在此处使用否定字符类。以 \W
开始(不是一个单词);否定意味着 是 单词字符的所有内容,但您可以添加所有异常(exception)情况:
[^\W_0-9cikmov]
[^...]
是一个否定字符类,类中的所有内容都必须不匹配。使用 \W
表示任何不在 a-z、A-Z、0-9 或下划线范围内的内容都将匹配,^
将其反转所以我们现在匹配所有字母、数字和下划线。
为此我们添加了数字和下划线,所以现在它再次只匹配字母。然后添加您的异常(exception),它将只匹配除 c、i、k、m、o 或 v 之外的所有字母。大写版本仍然匹配,除非您使正则表达式不区分大小写。
演示:
>>> import re
>>> re.findall(r'[^\W_0-9cikmov]', "Don't match 1232 or cikmov")
['D', 'n', 't', 'a', 't', 'h', 'r']
除您的异常(exception)情况外,所有字母均匹配。
关于python-2.7 - 除了字符集之外的 Python 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24712249/