我需要基于 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/