美文网首页思科DevNet
python2 re正则匹配关于中文的坑

python2 re正则匹配关于中文的坑

作者: doverxu | 来源:发表于2017-09-30 15:57 被阅读971次

    import re

    1.如果pattern是'匹配':

    m = re.match('匹配', '匹配')
    print(m.group())  # 匹配
    print(repr(m.group()))  # 打印\xe5\x8c\xb9\xe9\x85\x8d
    

    这样看上去没有什么问题。

    2.但是如果pattern是'[匹配]':

    m = re.match('[匹配]', '匹配')
    print(m.group())  # 打印乱码,这是为什么呢?不是应该匹配‘匹’字吗?
    print(repr(m.group()))  # 打印\xe5
    

    解释:'[匹配]'被解释为'[\xe5\x8c\xb9\xe9\x85\x8d]', '匹配'被解释为'\xe5\x8c\xb9\xe9\x85\x8d',
    这是字符串,本质上可以叫做‘字节串’,每个汉字被分成了3个字节,熟悉正则规则的话可以就很容易看出来了,匹配‘\xe5’
    是正确的。
    解决办法:是在字符串前添加u,这样就把字节串转化成了汉字的unicode码:"u'\u5339\u914d'",
    这样每个汉字就不会被拆分了(^-^)。

    相关文章

      网友评论

        本文标题:python2 re正则匹配关于中文的坑

        本文链接:https://www.haomeiwen.com/subject/ttcgsxtx.html