我是正则表达式的新手,我正在尝试编写一个正则表达式,它会在字符串中找到所有<p>
和</p>
标记,并将其替换为<span>
和{分别为{1}}。我想出了这个:
</span>
我也尝试过将2个字符串替换链接起来,但这些替换也没有用。
Regex rex = new Regex("<(p|P) />", RegexOptions.IgnorePatternWhitespace);
storeHours = rex.Replace(storeHours, "<span />");
答案 0 :(得分:2)
您不应该使用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 : " ";
HtmlNode lbl = doc.CreateElement("span");
lbl.InnerHtml = value;
tb.ParentNode.ReplaceChild(lbl, tb);
}
return doc.DocumentNode.OuterHtml;
}
答案 1 :(得分:2)
您的代码
storeHours = storeHours.Replace("<p>", "<span>").Replace("</p>", "</span>");
工作正常。我想你的问题可能与编码有关。你客户的代码是什么?
答案 2 :(得分:0)
如果您具有某些属性(例如style
),则以下正则表达式会更好:
storeHours.replace(/<p\b/gmi, "<span");
(它也替换了打开和关闭标签。)