使用c#替换html中的标签范围之间的文本

时间:2015-12-23 13:22:15

标签: c# .net regex

我需要替换HTML文档中的<span>标记之间的文本。我有以下代码:

string pattern = "<span class=\"nameLastname\">(.*)</span>";
string nameLastnamePattern = "<span class=\"nameLastname\">"+name+ lastname+"</span>";

System.IO.StreamReader objReader;
objReader = new StreamReader(System.IO.Directory.GetCurrentDirectory() + "\\intel\\main.html");
string content = objReader.ReadToEnd();
objReader.Close();

content = Regex.Replace(content,pattern, nameLastnamePattern);

StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\intel\\main.html");
writer.Write(content);
writer.Close();

例如,我想用<span class="nameLastname">George</span>之类的内容替换<span class="nameLastname">Dave</span>。但我的代码不起作用。

1 个答案:

答案 0 :(得分:0)

Working example on Rextester.

模式:@"<span([^>]*)class=\""(\w+)\""([^>]*)>(.*)<\/span>"

Regex regex = new Regex(pattern, RegexOptions.Multiline);
regex.Replace (inputData, "<span${1}class=\"${2}\"${3}>Replacement</span>")

第一组在 class属性之前捕获内容。第二组捕获类名。第三组在类之后捕获属性。第四组是实际的span节点元素内容。这会被取代。