You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式求助:修复未闭合的XML img标签

解决Python正则匹配未闭合img标签问题

嘿,我来帮你搞定这个正则问题!你现在的需求是精准匹配那些没有以/>结尾的img标签,然后把它们改成闭合形式对吧?

首先,你之前用的'(img.*?)>'会匹配所有img标签,不管有没有闭合,所以我们需要加个限制条件——排除掉那些>前面已经有/的标签。

正确的正则模式和替换方法

我们可以用负向回顾后发断言来实现这个需求,具体的正则表达式和替换逻辑如下:

import re

# 示例文本(包含未闭合和已闭合的img标签)
source_text = '<a href="a_url" class="url" target="_blank"> <img ng-src=" {{getImageUrl(\'homeHelp64.jpg\')}}", alt="?" width="16" height="16"> Home </a> <img src="valid.jpg"/>'

# 匹配未闭合img标签的正则
pattern = r'(<img[^>]*?)(?<!/)>'
# 替换:在>前添加/
fixed_text = re.sub(pattern, r'\1/>', source_text)

print(fixed_text)

正则模式详解

  • (<img[^>]*?):这是一个捕获组,负责匹配<img开头,一直到结尾>之前的所有内容。[^>]*?`是非贪婪匹配的任意非>字符,确保不会错误匹配到其他标签的>。
  • (?<!/):这是负向回顾后发断言,用来检查当前位置(也就是即将匹配>的前一个字符)不是/,这样就完美排除了已经是<img .../>`的闭合标签。
  • >:匹配未闭合标签的结尾符号。

替换逻辑

替换字符串r'\1/>'里的\1会引用我们刚才捕获到的<img到>之前的内容,然后我们在后面加上/>,就把原来的<img ...>改成了<img .../>`。

这样处理后,只有未闭合的img标签会被修改,已经正确闭合的标签会完全保留,不会被误改。

内容的提问来源于stack exchange,提问作者user1749707

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:32:30