如何在python中使用'+'解析标记

Pho*_*beB 5 python regex

当我尝试编译时,我得到一个"无需重复"的错误:

search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)
Run Code Online (Sandbox Code Playgroud)

问题是'+'符号.我该怎么处理?

Tom*_*lak 9

re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
Run Code Online (Sandbox Code Playgroud)

"+"是正则表达式中的"至少重复一次"量词.它必须遵循可重复的内容,或者如果要匹配文字"+",则必须进行转义.

如果你想动态构建你的正则表达式,那就更好了.

re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
Run Code Online (Sandbox Code Playgroud)


bal*_*pha 6

逃避加号:

r'\+test'
Run Code Online (Sandbox Code Playgroud)

加号在正则表达式中具有特殊含义(意思是"匹配前一次或多次").因为在你的正则表达式中它出现在一个开放的paren之后,没有"previous"可以反复匹配.