python - 正则表达式:如何匹配语言的字符集(有一些异常(exception))?

标签 python regex python-3.x

让我使用英语字符集作为示例,尽管问题实际上是如何使该方法适用于任何语言的字符集。

我想编写一个正则表达式,匹配集合 (a-zA-Z) 中的两个字符,除了某些特定字母。对于英语,假设异常(exception)列表是:任何 CIKMOV 或其小写 cikmov。

虽然对于英文字符集我可以写如下:

mo = re.search(r"[ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}", s)

它并不紧凑,更重要的是需要我了解该语言的字符集,以便我可以枚举子集。但我只获得了每种语言的异常(exception)列表,并且并不了解所有语言。

当然,以下内容对我不起作用:

mo = re.search(r"[^cikmovCIKMOV]{2}", s)

因为它仅排除异常(exception)列表,但包括其他所有内容(包括不在语言集中的字符)。

是否有比上述指定字符子集以消除异常的繁琐方法更好的编写正则表达式的方法?

选择的语言是动态输入(因此不仅限于英语/en-us),每种语言的异常(exception)情况指定如下:

exceptionlist["en-us"] = "cikmovCIKMOV"
exceptionlist["de-de"] = 

编辑: 我不认为这是 how to match all alphabet except few 的重复项。这个问题假设我知道一种语言的“a”和“z”。但这里我所拥有的只是一种语言的异常(exception)列表。

最佳答案

是不是很容易搭建呢?喜欢:

availablelist["en-us"] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
exceptionlist["en-us"] = "cikmovCIKMOV"

regexes["en-us"] = re.compile(f"[{"".join([char in availablelist["en-us"] if char not in exceptionlist["en-us"]])}]")

您可以预编译您需要的每个正则表达式。

关于python - 正则表达式:如何匹配语言的字符集(有一些异常(exception))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57292234/

相关文章:

python - Pip install 与包的开发版本不匹配

用于使 TextMate 中最后一个字符大写的正则表达式语法

python - 如何覆盖数据框第一行的值

Python __init__ 和 classmethod,它们必须具有相同数量的参数吗?

python - 在R中制作时间序列数据框

python - 寻找用于在镶嵌域上进行数值积分的 Python 包

css - CSS SelectorText 的正则表达式

Javascript 正则表达式模式匹配多个字符串( AND、OR、NEAR/n、P/n )

php - 执行带有参数的Python程序并将结果用作PHP变量? (CodeIgniter、TextBlob、Python 3.4、PHP 7)

python - 没有异常时将回溯打印到文件