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

rep*_*man 6 python regex unicode case-insensitive character-properties

假设我想匹配一个小写字母后跟一个大写字母,我可以做类似的事情

re.compile(r"[a-z][A-Z]")
Run Code Online (Sandbox Code Playgroud)

现在我想对unicode字符串做同样的事情,即匹配'aÅ'或'yÜ'之类的东西.

试着

re.compile(r"[a-z][A-Z]", re.UNICODE)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有线索吗?

Tim*_*ker 7

这很难用Python正则表达式,因为当前的实现不支持像\p{Lu}和的Unicode属性快捷方式\p{Ll}.

[A-Za-z] 当然只会匹配ASCII字母,无论是否设置了Unicode选项.

所以,直到re模块更新(或安装regex目前正在开发中),您可能需要做编程方式(通过串迭代并做char.islower()/ char.isupper()上的字符),或手动指定所有Unicode代码点,这可能是不值得努力...