当我尝试编译时,我收到了“无需重复”的错误:
search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)
问题是'+'号。我该怎么处理?
答案 0 :(得分:9)
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
“+”是正则表达式中的“至少重复一次”量词。它必须遵循可重复的内容,或者如果要匹配文字“+”,则必须进行转义。
如果您想动态构建正则表达式,那就更好了。
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
答案 1 :(得分:6)
逃避加号:
r'\+test'
加号在正则表达式中具有特殊含义(表示“匹配前一次或多次”)。因为在你的正则表达式中它出现在一个开放的paren之后,没有“previous”可以反复匹配。