在Python中使用正则表达式匹配区分大小写的Unicode字符串
假设我想找到一个小写字母后面跟着一个大写字母,我可以这样做:
re.compile(r"[a-z][A-Z]")
现在我想对unicode字符串做同样的事情,也就是匹配像'aÅ'或者'yÜ'这样的组合。
我试过:
re.compile(r"[a-z][A-Z]", re.UNICODE)
但这不管用。
有没有什么线索?
1 个回答
7
用Python的正则表达式来做这个事情比较困难,因为现在的实现不支持像 \p{Lu}
和 \p{Ll}
这样的Unicode属性快捷方式。
[A-Za-z]
当然只会匹配ASCII字母,不管你是否开启了Unicode选项。
所以在 re
模块更新之前(或者你可以安装正在开发中的 regex
包),你要么得通过编程的方式来处理(遍历字符串,然后对每个字符使用 char.islower()
或 char.isupper()
),要么就手动指定所有的Unicode编码点,但这样做可能不太划算……