- Python進階編程:編寫更高效、優雅的Python代碼
- 劉宇宙 謝東 劉艷
- 333字
- 2021-04-30 12:39:40
2.6 在正則表達式中使用Unicode字符
在實際應用中,我們需要使用正則表達式處理Unicode字符。
默認情況下,re模塊已經對一些Unicode字符類有了基本的支持。比如,\\d已經匹配任意的unicode數字字符,相關代碼(re_unicode.py)示例如下:
import re num = re.compile('\d+') print(num.match('123')) print(num.match('\u0661\u0662\u0663'))
執行py文件,輸出結果如下:
<re.Match object; span=(0, 3), match='123'> <re.Match object; span=(0, 3), match='???'>
如果想在模式中包含指定的Unicode字符,可以使用Unicode字符對應的轉義序列(比如\uFFF或者\UFFFFFFF)。下面是一個匹配不同阿拉伯編碼頁面中所有字符的正則表達式,代碼如下:
arabic = re.compile('[\u0600-\u06ff\u0750-\u077f\u08a0-\u08ff]+') print(arabic)
當執行匹配和搜索操作的時候,最好先處理所有文本為標準化格式,但也應該注意一些特殊情況,如忽略大小寫匹配和大小寫轉換的行為。
pat = re.compile('stra\u00dfe', re.IGNORECASE) test_str = 'stra?e' print(pat.match(test_str)) print(pat.match(test_str.upper())) print(test_str.upper())
混合使用Unicode和正則表達式通常沒有那么好處理。如果真這樣做,最好安裝第三方正則表達式庫,它會為Unicode的大小寫轉換和其他特性提供全面的支持,包括模糊匹配。
推薦閱讀
- GeoServer Cookbook
- Building a Home Security System with Raspberry Pi
- Python爬蟲開發:從入門到實戰(微課版)
- Unity 2020 Mobile Game Development
- 從0到1:HTML+CSS快速上手
- Windows Forensics Cookbook
- ExtJS高級程序設計
- C/C++數據結構與算法速學速用大辭典
- Vue.js 2 Web Development Projects
- Emgu CV Essentials
- 快速入門與進階:Creo 4·0全實例精講
- .NET Standard 2.0 Cookbook
- Java編程從入門到精通
- Deep Learning for Natural Language Processing
- 從零開始學Unity游戲開發:場景+角色+腳本+交互+體驗+效果+發布