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


  之前一直有使用python 正則表達式來做中文字符串或者中英文數字混合的字符串的匹配,發現有不少情況下會匹配失靈或者結果混亂,並且在不同操作系統上匹配結果也不一致,查了很久都不知道是什么原因。今天終於徹底弄懂了,原來還是python中對中文的編碼問題造成的。

  解決辦法:

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

    step2 正則表達式前面一定要加 r ;

示例代碼:

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM