W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你正在使用正則表達(dá)式處理文本,但是關(guān)注的是Unicode字符處理。
默認(rèn)情況下re模塊已經(jīng)對(duì)一些Unicode字符類有了基本的支持。比如,\d已經(jīng)匹配任意的unicode數(shù)字字符了:
>>> import re
>>> num = re.compile('\d+')
>>> # ASCII digits
>>> num.match('123')
<_sre.SRE_Match object at 0x1007d9ed0>
>>> # Arabic digits
>>> num.match('\u0661\u0662\u0663')
<_sre.SRE_Match object at 0x101234030>
>>>
如果你想在模式中包含指定的Unicode字符,你可以使用Unicode字符對(duì)應(yīng)的轉(zhuǎn)義序列(比如uFFF或者UFFFFFFF)。比如,下面是一個(gè)匹配幾個(gè)不同阿拉伯編碼頁(yè)面中所有字符的正則表達(dá)式:
>>> arabic = re.compile('[\u0600-\u06ff\u0750-\u077f\u08a0-\u08ff]+')
>>>
當(dāng)執(zhí)行匹配和搜索操作的時(shí)候,最好是先標(biāo)準(zhǔn)化并且清理所有文本為標(biāo)準(zhǔn)化格式(參考2.9小節(jié))。但是同樣也應(yīng)該注意一些特殊情況,比如在忽略大小寫匹配和大小寫轉(zhuǎn)換時(shí)的行為。
>>> pat = re.compile('stra\u00dfe', re.IGNORECASE)
>>> s = 'stra?e'
>>> pat.match(s) # Matches
<_sre.SRE_Match object at 0x10069d370>
>>> pat.match(s.upper()) # Doesn't match
>>> s.upper() # Case folds
'STRASSE'
>>>
混合使用Unicode和正則表達(dá)式通常會(huì)讓你抓狂。如果你真的打算這樣做的話,最好考慮下安裝第三方正則式庫(kù),它們會(huì)為Unicode的大小寫轉(zhuǎn)換和其他大量有趣特性提供全面的支持,包括模糊匹配。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: