我目前正试图弄清楚如何在Python中的正则表达式中使用Unicode。
我想要开始工作的正则表达式如下:
r"([A-ZÜÖÄß]+\s)+"
这应包括多个大写单词的所有出现,其中可能有也可能没有变音符号。 Funnily enouth它几乎可以做我想要的,但它仍然忽略了变形金刚。
例如,在FUßBALL AND MORE
中只应检测到BALL AND MORE
。
我已经尝试过简单地使用Unicode表示形式(Ü
变成\u00DC
等),因为它在另一个线程中被建议,但这也不起作用。相反,我可能会尝试使用“正则表达式”库而不是“重新”,但我很想知道我现在做错了什么。
如果您能够启发我,请随时这样做。
答案 0 :(得分:0)
使用Unicode字符串。确保您的源以声明的编码保存:
#coding:utf8
import re
for s in re.finditer(ur"[A-ZÜÖÄß]+",u"FUßBALL AND MORE"):
print s.group()
输出:
FUßBALL
AND
MORE
如果没有Unicode字符串,您的字节字符串将在源文件的编码中。如果是UTF-8,则对于非ASCII,它们是多字节的。在狭窄的Python构建中,您仍然会遇到Unicode字符串问题,但前提是您使用Unicode代码点> U + FFFF(例如表情符号),因为它们将使用UTF-16代理(两个代码点)进行编码。在这种情况下,切换到解决问题的最新Python 3.x并且所有Unicode代码点的长度都为1.