上一篇文章: Python實用技法第28篇:將Unicode文本統一表示爲規範形式
咱們正在使用正則表達式處理文本,可是須要考慮處理Unicode字符。
默認狀況下re模塊已經對某些Unicode字符類型有了基本的認識。例如,d已經能夠匹配任意Unicode數字字符了:python
import re num=re.compile('\d+') str1='123' str2='\u0661\u0662\u0663' print(num.match(str1)) print(num.match(str2))
結果:正則表達式
<re.Match object; span=(0, 3), match='123'> <re.Match object; span=(0, 3), match='١٢٣'>
若是須要在模式字符串中包含指定的Unicode字符,能夠針對Unicode字符使用轉義序列(例如uFFFF或UFFFFFFF)。好比,這裏有一個正則表達式在多個不一樣的阿拉伯代碼頁中匹配全部的字符:segmentfault
re.compile('[\u0600-\u06ff\u0750-\u077f\u08a0-\u08ff]+')
當執行匹配和搜索操做時,一個好主意是首先將全部的文本都統一表示爲標準模式(見上一節)。可是,一樣重要的是須要注意一些特殊狀況,例如,當不區分大小寫的匹配和大寫轉換匹配聯合起來時。spa
把Unicode和正則表達式混在一塊兒使用絕對能讓人頭疼欲裂,若是真的要這麼作,應該考慮安裝第三方的正則表達式庫(http://pypi.python.org/pypi/r...)code
這些第三方庫針對Unicode大寫轉換提供了完整的支持,還包括其餘各類有趣的特性,包括近似匹配。字符串
上一篇文章: Python實用技法第28篇:將Unicode文本統一表示爲規範形式