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

标签 python-2.7 regex-negation

我正在尝试查找字符串中所有不是 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/

相关文章:

python - 否定匹配的正则表达式模式

python - sys.version_info 对于 Python 版本检查是否可靠?

python - 从类方法调用实例方法,在python3中允许,在python2中不允许?

python:遍历具有列表值的字典

python - 属性错误 : 'module' object has no attribute 'computation'

mysql - Python : df. to_sql with OperationalError 1046, 'No database selected and OperationalError 2005, "Unknown MySQL server hos

regex - 转到正则表达式以匹配带有括号的标签

java - 如何使 EditText 从任何语言而不是符号中获取输入字符

python - Pandas 字符串匹配负前瞻不起作用

regex - 转到正则表达式以匹配所有不以时间戳开头的行