如何替换内部字符串正则表达式
本文关键字:内部 字符串 正则表达式 替换 何替换 | 更新日期: 2023-09-27 17:59:38
我有以下代码片段,搜索条件是找到所有具有id="someImage">值的img标签
<img id="someImage" src="C:'logo.png" height="64" width="104" alt="myImage" />
我想替换
src="C:'logo.png" to src="someothervalue"
所以最终输出将是
<img id="someImage" src="C:'someothervalue" height="64" width="104" alt="myImage" />
我如何使用正则表达式实现这一点。
谢谢。
您可以在正则表达式中使用组。通过在正则表达式中使用括号来创建组。获取Match
对象时,此对象将包含一个Group
集合:
string input = "<html><img id='"someImage'" src='"C:''logo.png'" height='"64'" width='"104'" alt='"myImage'" /></html>";
var regex = new Regex("(<img(.+?)id='"someImage'"(.+?))src='"([^'"]+)'"");
string output = regex.Replace(
input,
match => match.Groups[1].Value + "src='"someothervalue'""
);
在上面的示例中,将有 5 个组:
-
Groups[0]
这是整个比赛:<img id='"someImage'" src='"C:''logo.png'"
-
Groups[1]
这是src
属性之前的所有内容:<img id='"someImage'"
-
Groups[2]
和Groups[3]
是(.+?)
部分。 -
Groups[4]
是src
属性的原始值:C:'logo.png
在示例中,我将整个匹配项替换为 Groups[1]
的值和新的 src 属性。
脚注:虽然正则表达式有时足以使工作操作 html 文档,但它通常不是最佳方法。如果您事先知道正在使用 xhtml
,那么您可以使用 XmlDocument
+ XPath
.如果是html,那么你可以使用HtmlAgilityPack。
对 XML 使用正则表达式不是一个好主意。根据语言的不同,您应该使用一些 XML 读取器,提取<img>
节点,然后获取其 id。用于查询 XML 数据的一种有用语言是 XPath,许多 XML 库都支持这种语言。
在 C# 中,您可以查看 XmlDocument 类(和相关类(。
另一个是XmlReader。
后者仅提供顺序访问,而第一个将整个树加载到内存中,因此第一个更易于使用(特别是如果您的 XML 内容不是太大(。