我希望使用正则表达式在SVG文件中替换特定文本。
例如,文件中可能有许多类似以下属性的内容:
我想将替换为:
注意,每个实例的原始数值可能不同,但我想将它们全部更改为(100,100,100)。
我尝试了以下操作:
当然,它没有起作用,因为有括号。当我在括号前使用转义字符'\('和'\)'时,会出现红色波浪线错误,表示无法识别转义字符,但是对于正则表达式,我应该转义括号字符,以便它们被按照字面意思解释,因为它们是正则表达式的特殊字符。正确吗?
如何在此字符串中使用正则表达式以实现我的目的?
例如,文件中可能有许多类似以下属性的内容:
<g clip-path="url(#clipId0)" fill="none" stroke="rgb(150,150,150)" stroke-opacity="0.14902" stroke-width="0.425" >
<polyline points="17001.1,7859.91 17018.7,7859.91 17018.7,7901.08 17001.1,7901.08 17001.1,7859.91 " />
<polyline points="17018.7,7880.5 17001.1,7880.5 " />
<polyline points="17018.7,7883.44 17001.1,7883.44 " />
</g>
我想将替换为:
stroke="rgb(150,150,150)"
to be
stroke="rgb(100,100,100)"
注意,每个实例的原始数值可能不同,但我想将它们全部更改为(100,100,100)。
我尝试了以下操作:
//Make SVG monochrome
string svgText = File.ReadAllText(svgPath);
Regex.Replace(svgText, "stroke=\"rgb(.*,.*,.*)\"", "stroke=\"rgb(100,100,100)\"");
File.WriteAllText(svgPath, svgText);
当然,它没有起作用,因为有括号。当我在括号前使用转义字符'\('和'\)'时,会出现红色波浪线错误,表示无法识别转义字符,但是对于正则表达式,我应该转义括号字符,以便它们被按照字面意思解释,因为它们是正则表达式的特殊字符。正确吗?
如何在此字符串中使用正则表达式以实现我的目的?
svgText = Regex.Replace(svgText, @"stroke=""rgb\(\d{1,3},\d{1,3},\d{1,3}\)""", "stroke=\"rgb(100,100,100)\"");
的东西,但实际上最好使用 XML 解析器。 - Evk\d{1,3}
表示“1-3个数字”。 - Evk