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

时间:2016-07-21 13:32:25

标签: python regex unicode escaping

我需要根据unicode字符串构建一个re模式(例如我有" word",我需要类似^" word" |" word&#34 )。然而,"字"可以包含特殊的重新字符。匹配"字"实际上,我需要在unicode字符串中转义特殊的re字符。基本的re.escape()函数为ascii字符串完成工作。我怎样才能为unicode做这个?

1 个答案:

答案 0 :(得分:6)

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

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

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

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