2024-04-19 03:36:33 发布
网友
当我试图编译此文件时,出现“无需重复”错误:
search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)
问题是“+”号。我该怎么处理?
逃离正题:
r'\+test'
加号在正则表达式中有一个特殊的含义(意思是“匹配上一个一次或多次”)。因为在正则表达式中,它出现在打开的paren之后,所以没有“previous”可重复匹配。
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
“+”是正则表达式中的“至少重复一次”量词。它必须遵循可重复的内容,或者如果要匹配文本“+”,则必须对其进行转义。
如果您想动态地构建regex,最好是这样。
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
逃离正题:
加号在正则表达式中有一个特殊的含义(意思是“匹配上一个一次或多次”)。因为在正则表达式中,它出现在打开的paren之后,所以没有“previous”可重复匹配。
“+”是正则表达式中的“至少重复一次”量词。它必须遵循可重复的内容,或者如果要匹配文本“+”,则必须对其进行转义。
如果您想动态地构建regex,最好是这样。
相关问题 更多 >
编程相关推荐