Python实用技法第29篇:用正则表达式处理Unicode字符

上一篇文章: 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文本统一表示为规范形式
相关文章
相关标签/搜索