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中正则表达式在中文字符串匹配时的坑的主要内容,如果未能解决你的问题,请参考以下文章