Python正则表达式匹配Unicode属性
Perl和一些其他的正则表达式引擎支持Unicode属性,比如可以在正则表达式中使用类别。例如,在Perl中,你可以用\p{Ll}
来匹配任意一个小写字母,或者用\p{Zs}
来匹配任何空格分隔符。不过,我在Python的2.x和3.x版本中没有看到对这个功能的支持(对此我感到很遗憾)。有没有人知道有什么好的方法可以实现类似的效果?自己想出来的解决方案也欢迎。
6 个回答
7
你可以逐个字符地费力地使用unicodedata模块:
import unicodedata
def strip_accents(x):
return u''.join(c for c in unicodedata.normalize('NFD', x) if unicodedata.category(c) != 'Mn')
78
regex模块(这是一个可以替代标准的re
模块的工具)支持使用\p{}
这种写法来处理Unicode字符的属性。
25
你有没有试过Ponyguruma,这是一个把Python和Oniguruma正则表达式引擎连接起来的工具?在这个引擎里,你可以简单地用\p{Armenian}
来匹配亚美尼亚字符。\p{Ll}
或者\p{Zs}
也可以使用。