繁体   English   中英

正则表达式替换 HTML 标签

[英]Regular Expression to replace HTML tags

我是正则表达式的新手,正在尝试编写一个正则表达式,它将在字符串中找到所有<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>");

您不应将 Regex 用于 HTML 操作。 您应该使用 HTML 解析器,您可以尝试使用 HTML Agility Pack。 下面是一个例子:

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;
}

你的代码

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

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

如果您有一些属性(例如style ),那么以下正则表达式效果更好:

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

(它也取代了打开和关闭标签。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM