我知道从这个question的是,在nothing to repeat
一个正则表达式的表达,是蟒蛇的一个已知的bug。 但我必须编译这个unicode表达式如何解决“无法重复”的正则表达式错误?
re.compile(u'\U0000002A \U000020E3')
作为一个独特的字符。这是一个表情符号,是一个独特的角色。 Python把这个字符串理解为u'* \\u20e3'
,并且让我'没什么可重复的'错误。 我环顾四周,但找不到任何解决方案。是否存在任何工作?
我知道从这个question的是,在nothing to repeat
一个正则表达式的表达,是蟒蛇的一个已知的bug。 但我必须编译这个unicode表达式如何解决“无法重复”的正则表达式错误?
re.compile(u'\U0000002A \U000020E3')
作为一个独特的字符。这是一个表情符号,是一个独特的角色。 Python把这个字符串理解为u'* \\u20e3'
,并且让我'没什么可重复的'错误。 我环顾四周,但找不到任何解决方案。是否存在任何工作?
这没有什么与你链接的问题。你没有遇到错误。你的正则表达式只有一个特殊的字符(一个*
),你没有逃脱。
编译成一个正则表达式之前,简单地逃脱字符串:
re.compile(re.escape(u'\U0000002A \U000020E3'))
现在,我作为一个有点不确定为什么你代表*
为\U0000002A
- 也许你可以澄清你的意图在这里?
'u'\ U0000002A \ U000020E3''是一个表情符号。我必须在正则表达式中将其作为单个字符来捕捉它。转义它不起作用。但是,当我试图编译它时,'没有重复错误'出现。 – emanuele
Thomas,OP从文件中读取它们(模式是“动态的”)。这个问题似乎与以前的OP的帖子有关。 –
@emanuele虽然这个字符表示为单个字符,但它在技术上并不是单个字符。这并不重要,但问题可能在其他地方。你能告诉你如何使用这个正则表达式和什么输入? –
您需要使用re.escape (如“托马斯·奥罗斯科”答案显示),但只使用它的一部分是动态的,例如:
print re.findall(u"cool\s*%s" % re.escape(u'\U0000002A \U000020E3'),
u"cool * \U000020E3 crazy")
如果你的意思是你要匹配那些符号从字面上看,不被视为正则表达式模式,那么你在下面有一个答案。 –