如何在Python中解析带'+'的标签
我在编译这个代码的时候遇到了“没有可以重复的内容”这个错误:
search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)
问题出在那个'+'号上。我该怎么处理它呢?
2 个回答
8
转义加号:
r'\+test'
在正则表达式中,加号有特别的意思,它表示“匹配前面的内容一次或多次”。因为在你的正则表达式中,加号出现在一个左括号后面,所以没有“前面的内容”可以重复匹配。
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)
在正则表达式中,“+”是一个表示“至少重复一次”的符号。它必须跟在一个可以重复的东西后面,或者如果你想匹配一个字面上的“+”,就需要对它进行转义。
如果你想动态构建你的正则表达式,使用这个方法会更好。