我从question知道,在正则表达式中nothing to repeat
是python的已知错误。
但我必须编译这个unicode表达式
re.compile(u'\U0000002A \U000020E3')
作为一个独特的角色。这是一个表情符号,是一个独特的角色。 Python将此字符串理解为u'* \\u20e3'
,并让我“无需重复”错误。
我环顾四周,但我找不到任何解决方案。是否有任何解决方法?
答案 0 :(得分:5)
这与您关联的问题几乎没有关系。你没碰到一个bug。你的正则表达式只是有一个你没有逃脱的特殊字符(*
)。
在将其编译为正则表达式之前,只需将字符串转义:
re.compile(re.escape(u'\U0000002A \U000020E3'))
现在,我有点不确定你为什么代表*
作为\U0000002A
- 也许你可以澄清你的意图在这里?
答案 1 :(得分:0)
你需要使用re.escape(如“Thomas Orozco”答案中所示) 但只能在动态部分使用它,例如:
print re.findall( u"cool\s*%s" % re.escape(u'\U0000002A \U000020E3'),
u"cool * \U000020E3 crazy")