你们可以建议我如何在C#中使用正则表达式删除HTML的syle属性中的一些CSS规则。
我只想要text-align和margin规则。否则用“”(空字符串)替换。
例如:
<p style="text-align: left; margin: 5px;color: red;"><strike>iiyuyuiy</strike></p>
会变成这样。
<p style="text-align: left; margin: 5px;"><strike>iiyuyuiy</strike></p>
颜色:红色;除去。
答案 0 :(得分:1)
如果您熟悉jQuery,请尝试 .css() :
$('selctor').css("color", ""); //passing value as null.
document.querySelector('#selctor').style.color= '';
答案 1 :(得分:0)
正如您可能知道的那样,使用正则表达式解析html充满了危险。有人肯定会为你提供一个Dom解析器解决方案,所以这个答案主要是讨论事物的正则表达方面。
我通常喜欢提供一个正则表达式解决方案,但你提出的任务对于正则表达式来说确实是一个令人震惊的任务(尽管没有人责备你)。为什么呢?
分号不是CSS规则的完美分隔符
要匹配和删除规则,您需要知道停止的位置。对于CSS规则,这是分号。但是如果CSS规则除了终结符之外还有一个分号,那么正则表达式就会失败。我没有考虑到一个例子,但它经常被讨论。
在一个没有麻烦的分号的世界......
如果背靠墙并且冒号不是问题,那么这里有一种可以在C#中使用的方法,这要归功于其无限宽度的外观。
(?<=style="[^"]*)(?:(?:text-align|margin)[^";]*;|(\b[^";]*;))
在替换委托中,使用此正则表达式,我们将仅在设置捕获组1时将匹配替换为空字符串。
这次我不会提供示例代码,因为我想鼓励任何人这样做。不过,如果您对学习技术感兴趣,我强烈建议您阅读有关matching patterns except in certain contexts的问题。