我正在匹配标识符,但现在我有一个问题:我的标识符允许包含Unicode字符。因此,旧的方法已经不够用了:
t_IDENTIFIER = r"[A-Za-z](\\.|[A-Za-z_0-9])*"
在我的标记语言my markup language解析器中,我通过允许除了我明确使用的字符之外的所有字符来匹配Unicode字符,因为我的标记语言只有两个或三个需要逃逸的字符。
如何使用Python正则表达式和PLY匹配所有Unicode字符?这是一个好主意吗?
我希望人们可以在他们的程序中使用像Ω»«°foo² väli π这样的标识符(变量名等)。如果可行的话,我甚至希望人们能用自己的语言编写程序!无论如何,Unicode现在已经得到广泛支持,并且应该会越来越流行。
编辑:Python正则表达式似乎不认识POSIX字符类。
>>> import re
>>> item = re.compile(r'[[:word:]]')
>>> print item.match('e')
None
编辑:为了更好地解释我所需要的内容。我需要一个正则表达式,可以匹配所有Unicode可打印字符,但完全不匹配ASCII字符。
编辑:r“\ w”做了一些我想要的东西,但它不匹配«»,我还需要一个不匹配数字的正则表达式。