正则表达式用于替换HTML标记

本文关键字:标记 HTML 替换 用于 正则表达式 | 更新日期: 2023-09-27 18:10:49

我是正则表达式的新手,我试图写一个正则表达式,它将在字符串中找到所有<p></p>标签,并分别用<span></span>替换它们。我想到了这个:

Regex rex = new Regex("<(p|P) />", RegexOptions.IgnorePatternWhitespace);
            storeHours = rex.Replace(storeHours, "<span />");

我也试过链接2个字符串替换,这也不起作用。

 storeHours = storeHours.Replace("<p>", "<span>").Replace("</p>", "</span>");

正则表达式用于替换HTML标记

你的代码
storeHours = storeHours.Replace("<p>", "<span>").Replace("</p>", "</span>");

工作好。我想你的问题可能出在编码上。你客户的代码是什么?

你不应该在HTML操作中使用正则表达式。你应该使用HTML解析器,你可以尝试使用HTML敏捷包。下面是一个例子:

public string ReplacePElement(string htmlContent) 
{
  HtmlDocument doc = new HtmlDocument();
  doc.LoadHtml(htmlContent);
  foreach(HtmlNode p in doc.DocumentNode.SelectNodes("p"))
  {
    string value = tb.InnerText.Length>0 ? tb.InnerText : "&nbsp;";
    HtmlNode lbl = doc.CreateElement("span");
    lbl.InnerHtml = value;
    tb.ParentNode.ReplaceChild(lbl, tb);
  }
  return doc.DocumentNode.OuterHtml;
}

如果你有一些属性(例如style),那么下面的regexp工作得更好:

storeHours.replace(/<p'b/gmi, "<span");

(它也取代了开始和结束标记)