笔记
正则的组引用是怎么静默丢掉的
约 260 字 · 阅读约 1 分钟
建站记录 · 本文有 AI 参与整理,文中的操作与环境对应写作当时的版本。
给 RSS 里的外链统一加 target="_blank",用的是 re.sub 加组引用。生成完一跑,XML 解析直接报错,指向一行 <a href="">。
链接的地址没了。替换串里的 \1 在脚本字符串里过了两道转义,一道没写对,它就静默地变成了空串——没有报错,没有警告,只是引用丢了,剩下个合法的空字符串。
改法是用回调函数:lambda m: '...' + m.group(1) + '...'。组引用不经过字符串转义,就没有可丢的地方。
肉眼永远看不出来这种错——href="" 是完全合法的。能抓住它的还是那套笨办法:把 feed 当 XML 完整解析一遍。