使用图像源名称替换alt标记的正则表达式

时间:2017-01-14 14:55:33

标签: html regex

我一直在使用正则表达式尝试更改1000个文件,并且都添加了图像alt标记作为图像名称。

要搜索/替换的示例文本

<img src="path/someimagename.jpg" height="100" width="100" />

结束状态

<img src="path/someimagename.jpg" alt="someimagename" height="100" width="100" />

我可以找到没有alt

的项目
(<img(?!.*?alt=(['"]).*?\2)[^>]*)(>)

替换:$1 alt="" $3

我可以找到图片名称

<img\b[^<>]*?src=['"].*?\/([^.\/<>]*)\.[^.\/<>]*['"][^><]*?\>

我还没想出要将两者结合起来并实现目标

希望使用文本编辑器替换所有文件。

任何建议或帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

您需要在正则表达式中创建一些捕获组。我稍微调整了你的表达式(它现在也支持嵌套路径):

(<img\b[^<>]*?src=['"].*?\/?.*?)([^.\/<>]*)(\.[^.\/<>]*?['"])([^><]*?\>)

然后,您可以将其替换为:

$1$2$3 alt="$2"$4

您可以看到here (1)正在使用中。

要同时阻止包含alt=""的所有条目,您可以使用以下正则表达式:

(<img\b(?!.*alt=["'].*)[^<>]*?src=['"].*?\/?.*?)([^.\/<>]*)(\.[^.\/<>]*?['"])((?!.*alt=["'].*)[^><]*?\>)

您可以看到here (2)正在使用中。