python - 如何为正则表达式转义 unicode 字符串?

标签 python regex unicode escaping

我需要基于 unicode 字符串构建一个 re 模式(例如,我有“word”,我需要像 ^“word”| “word”这样的东西)。但是,“单词”可以包含特殊的 re 字符。要按原样匹配“单词”,我需要转义 unicode 字符串中的特殊 re 字符。基本的 re.escape() 函数完成 ascii 字符串的工作。我如何为 unicode 执行此操作?

最佳答案

re.escape() 在每个非 ASCII 字母数字字符前插入一个反斜杠。这实际上可能会导致插入大量不必要的反斜杠,但是,Python 会忽略不以可识别的转义序列开头的反斜杠,因此不会造成太大的危害(除了可能的一些性能损失)。

但是如果你想构建一个更严格的escape(),你可以:

def escape(s):
    return re.sub(r"[(){}\[\].*?|^$\\+-]", r"\\\g<0>", s)

它只涉及实际的正则表达式元字符。我当然希望我没有错过任何一个:)

关于python - 如何为正则表达式转义 unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505706/

相关文章:

python - 查找 NumPy 数组中大于 N 的值的开始/停止索引范围

python - .findall() 可以匹配 python etree 中的多个值吗?

python - 更改 seqID 并删除模式后面的部分

c++ - 用于单元测试的 Unicode 测试字符串

PHP FPDF 无法正确显示某些 UTF-8 解码的特殊字符

c# - SELECT .... WHERE something equals with 汉字

python - 如何在Python中切片后在SQL中获取查询结果中的记录总数

python - numpy:int 是一个 basestring?

python - 使用Python和正则表达式,如何从html中删除<sup>标签?

regex - BASH_REMATCH 在正则表达式匹配后显示空字符串