如何修复“无需重复”正则表达式错误?

时间:2016-01-11 10:15:40

标签: python regex python-2.7

我从question知道,在正则表达式中nothing to repeat是python的已知错误。 但我必须编译这个unicode表达式

re.compile(u'\U0000002A \U000020E3')

作为一个独特的角色。这是一个表情符号,是一个独特的角色。 Python将此字符串理解为u'* \\u20e3',并让我“无需重复”错误。 我环顾四周,但我找不到任何解决方案。是否有任何解决方法?

2 个答案:

答案 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")