在Python中使用正则表达式匹配区分大小写的Unicode字符串

6 投票
1 回答
1445 浏览
提问于 2025-04-17 02:10

假设我想找到一个小写字母后面跟着一个大写字母,我可以这样做:

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编码点,但这样做可能不太划算……

撰写回答