我正在匹配标识符,但现在我遇到了一个问题:我的标识符允许包含 unicode 字符。因此,旧的做事方式是不够的:
t_IDENTIFIER = r"[A-Za-z](\\.|[A-Za-z_0-9])*"
在我的标记语言解析器中,我通过允许除我明确使用的字符之外的所有字符来匹配 unicode 字符,因为我的标记语言只有两个或三个我需要以这种方式转义的字符。
如何将所有 unicode 字符与 python 正则表达式和 ply 匹配?这也是一个好主意吗?
我想让人们在他们的程序中使用像 Ω » « ° foo² väli π 这样的标识符作为标识符(变量名等)。见鬼!如果可行,我希望人们可以用自己的语言编写程序!无论如何,如今在很多地方都支持 unicode,它应该传播开来。
编辑:python 正则表达式似乎无法识别 POSIX 字符类。
>>> import re
>>> item = re.compile(r'[[:word:]]')
>>> print item.match('e')
None
编辑:为了更好地解释我需要什么。我需要一个匹配所有 unicode 可打印字符但根本不匹配 ASCII 字符的正则表达式。
编辑: r"\w" 做了一些我想要的东西,但它不匹配« »,我还需要一个不匹配数字的正则表达式。