正则表达式用于替换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>");
你的代码
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 : " ";
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");
(它也取代了开始和结束标记)