python中正則表達式在中文字符串匹配時的坑

  以前一直有使用python 正則表達式來作中文字符串或者中英文數字混合的字符串的匹配,發現有很多狀況下會匹配失靈或者結果混亂,而且在不一樣操做系統上匹配結果也不一致,查了好久都不知道是什麼緣由。今天終於完全弄懂了,原來仍是python中對中文的編碼問題形成的。python

  解決辦法:正則表達式

    step1 在設置默認編碼爲UTF8以後,將正則表達式和待匹配字符串都decode("utf8")統一成 unicode再進行匹配;微信

    step2 正則表達式前面必定要加 r ;編碼

示例代碼:spa

        kw_regexp = r'微信'+ kw_str.decode("utf8")
        pattern = re.compile(kw_regexp, re.I)
        result = pattern.search(cont.decode("utf8"))

其中,cont是待匹配字符串,kw_regexp是拼接來的正則表達式字符串,前面必定要加"r"。操作系統

相關文章
相關標籤/搜索