正则表达式:如何从img标签字符串中匹配除alt属性内文本外的所有内容
匹配非alt属性内部文本的正则方案
针对你给出的alt属性用两组双引号包裹的img标签结构,可按你的使用场景选择对应正则:
通用兼容方案(支持绝大多数正则引擎)
(^.*(?<=alt=""))|("".*$)
匹配逻辑:
- 第一分支匹配从字符串开头到
alt=""结束的全部内容 - 第二分支匹配从
alt属性值后的""开始到字符串结尾的全部内容
两部分组合就是排除了alt内部文本的所有内容,开启全局匹配即可一次性获取所有分段。
PCRE引擎专属方案(适用性更广,不限制alt属性位置)
如果你的运行环境支持PCRE正则规则(如PHP、Python的regex库、Java 9+等),可以用更通用的写法,即便alt不是第一个属性也能正常匹配:
(?<=alt="").*?(?="")(*SKIP)(*FAIL)|.+
匹配逻辑:
- 先匹配到alt属性内部的文本,通过
(*SKIP)(*FAIL)标记这部分内容跳过不匹配 - 剩余所有内容全部正常匹配,自动排除alt内部文本
简化替代方案
如果你的最终需求是删除alt属性内部文本保留其余内容,不需要单独匹配,直接用你原有匹配alt内部文本的正则,将匹配结果替换为空即可实现相同效果。
内容的提问来源于stack exchange,提问作者Musamba
相关产品推荐
相关产品推荐

