【发布时间】:2009-06-26 11:09:32
【问题描述】:
当我尝试编译这个时,我得到一个“没有重复”的错误:
search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)
问题是“+”号。我该如何处理?
【问题讨论】:
当我尝试编译这个时,我得到一个“没有重复”的错误:
search = 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])' % '\+test', re.I)
“+”是正则表达式中的“至少重复一次”量词。它必须遵循可重复的内容,或者如果您想匹配文字“+”,则必须对其进行转义。
如果您想动态构建正则表达式,这样会更好。
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
【讨论】:
转义:
r'\+test'
加号在正则表达式中有特殊的含义(意思是“匹配前一个一次或多次”)。由于在您的正则表达式中它出现在一个开放的括号之后,因此没有“前一个”可以重复匹配。
【讨论】: