如何在Python中解析带'+'的标签

5 投票
2 回答
8214 浏览
提问于 2025-04-15 12:30

我在编译这个代码的时候遇到了“没有可以重复的内容”这个错误:

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)

在正则表达式中,“+”是一个表示“至少重复一次”的符号。它必须跟在一个可以重复的东西后面,或者如果你想匹配一个字面上的“+”,就需要对它进行转义。

如果你想动态构建你的正则表达式,使用这个方法会更好。

撰写回答