我试图re在Python 2.7.3中使用Unicode编码的Devnagari文本.我已经添加from __future__ import unicode_literals到我的代码的顶部,所以所有字符串文字都应该是unicode对象.
但是,我遇到了Python正则表达式匹配的一些奇怪问题.例如,考虑这个名字:"किशोरी".这是一个(拼写错误的)名字,用印地语,由我的一个用户输入.任何印地语读者都会认为这是一个词.
以下内容返回匹配,因为它应该:
re.search("^[\w\s][\w\s]*","??????",re.UNICODE)
但这不是:
re.search("^[\w\s][\w\s]*$","??????",re.UNICODE)
一些探险者透露,该字符串中只有一个字符,字符0915(क)被识别为属于\ w字符类.这是不正确的,因为"派生核心属性"上的Unicode字符数据库文件将此字符串中的其他字符(我没有全部检查过)列为字母 - 实际上它们就是这样.
这只是Python实现中的一个错误吗?我可以通过手动将所有Devnagari字母数字字符定义为字符范围来解决这个问题,但这会很痛苦.或者我做错了什么?