python中正则表达式在中文字符串匹配时的坑

Posted 爱丽丝的小宇宙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"。

 

以上是关于python中正则表达式在中文字符串匹配时的坑的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 自己遇到的坑

python正则表达式匹配中文日期时间

python正则表达式匹配中文日期时间

Python中正则匹配使用findall时的注意事项

使用正则表达式重新字符串匹配提取 URL 链接 - Python

转载Python使用中文正则表达式匹配指定中文字符串的方法示例