Python正则匹配替换指定词组时残留多余Bar字符如何解决
正则替换残留问题修正方案
问题原因
正则表达式的多选分支|遵循从左到右优先匹配规则,命中第一个符合条件的分支后就会停止后续匹配。你当前的分支顺序为f\/b|foo|foo bar,处理1 Foo Bar时会先匹配到短分支Foo,剩余的Bar无法被匹配,因此最终输出残留该字段。
修正方案
调整多选分支的顺序,将更长的匹配规则放在更靠前的位置,优先匹配完整的foo bar,再匹配短的foo即可。
修正后代码
re.sub(r"(?i)\b(\d+\.*\d*)\s*(f\/b|foo bar|foo)\b", r"\1fb", '1foo 1.5f/b 1 Foo Bar')
输出结果
'1fb 1.5fb 1fb'
内容的提问来源于stack exchange,提问作者K Max
相关产品推荐
相关产品推荐

