python2 re正則匹配關于中文的坑


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'",
這樣每個漢字就不會被拆分了(^-^)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容