如何批量删除SVG中仅含fill无stroke的图形以保留无fill图形?
解决方案:保留SVG中无fill的图形,删除仅含fill无stroke的图形
方法一:文本编辑器+正则表达式批量处理
SVG是XML格式的文本文件,你可以用支持正则的编辑器(比如VS Code、Notepad++)直接修改,批量删除目标元素:
正则匹配规则
针对**仅设置fill、未设置stroke(或stroke为none)**的图形元素(如<path>``<polygon>等),可以用以下正则匹配:
<(path|polygon|rect|circle|ellipse|polyline)[^>]*fill="[^"]+"[^>]*stroke(?:="none"|(?![^>]*stroke))[^>]*>.*?</\1>
操作步骤
- 下载目标SVG文件到本地,用文本编辑器打开
- 打开编辑器的替换功能(VS Code按
Ctrl+H,Notepad++按Ctrl+H) - 勾选「正则表达式」模式
- 将上述正则粘贴到「查找内容」框,「替换为」框留空
- 点击「全部替换」,即可批量删除符合条件的元素
方法二:手动定位删除(更稳妥)
如果担心正则误匹配,可手动筛选删除:
- 在文件中查找包含
fill="但不包含stroke="(或stroke="none")的图形标签 - 直接删除类似
<path fill="#FFFF00" d="..." />或<polygon fill="#FFFF00" points="..." stroke="none" />的整行/元素块
注意事项
- 操作前务必备份原文件,避免误操作导致文件损坏
- 若SVG样式写在
<style>标签内(如.yellow-fill { fill: yellow; }),正则无法直接匹配,需先将样式转为元素内联属性,或手动删除对应样式规则及应用该类的元素
内容的提问来源于stack exchange,提问作者oli_vi_er
相关产品推荐
相关产品推荐

