我一直在使用正则表达式尝试更改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=['"].*?\/([^.\/<>]*)\.[^.\/<>]*['"][^><]*?\>
我还没想出要将两者结合起来并实现目标
希望使用文本编辑器替换所有文件。
任何建议或帮助都会很棒。
答案 0 :(得分:0)
您需要在正则表达式中创建一些捕获组。我稍微调整了你的表达式(它现在也支持嵌套路径):
(<img\b[^<>]*?src=['"].*?\/?.*?)([^.\/<>]*)(\.[^.\/<>]*?['"])([^><]*?\>)
然后,您可以将其替换为:
$1$2$3 alt="$2"$4
您可以看到here (1)正在使用中。
要同时阻止包含alt=""
的所有条目,您可以使用以下正则表达式:
(<img\b(?!.*alt=["'].*)[^<>]*?src=['"].*?\/?.*?)([^.\/<>]*)(\.[^.\/<>]*?['"])((?!.*alt=["'].*)[^><]*?\>)
您可以看到here (2)正在使用中。