我有一段HTML代码,我想要删除一些样式部分,我知道我需要正则表达式,但我不知道如何生成正则表达式甚至如何在我的c#代码中应用它。以下是原始字符串的示例:
<p style="color: #000000; text-transform: none; letter-spacing: normal; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px;">
以下是我希望在替换操作后获得的输出:
<p>
我想摆脱style属性。我需要为<p ...>
关于这类工作有很多例子,但我对此感到困惑。所以解决方案的任何线索都会很棒。提前谢谢。
答案 0 :(得分:3)
你真的找到一个正则表达式教程(example)来了解匹配是如何工作的,然后替换会更容易......
string output = Regex.Replace(input, @"(?<=<p)[^>]+", "");
请参阅demo。
要仅删除样式属性,您可以使用它:
string output = Regex.Replace(input, @"(?<=<p)\s*style=""[^""]+""", "");
请注意,如果style属性紧跟在<p
之后(具有任意数量的空格),则此方法无效。
要删除html中任何位置的属性样式,您可以使用(比前一个更安全):
string output = Regex.Replace(input, @"(?<=<p)([^>]*?)\s*style=""[^"">]+""", "$1");
答案 1 :(得分:0)
不确定如何在c#中执行此操作,但在bash正则表达式中使用一般示例,我会这样做:
echo "$pattern" | sed -r 's/(<p).*(>)/\1\2/'
其中:
(<p) ----- Captures the opening bracket with p
.* ----- Anything inbetween up to the next ">"
() ----- Captures the closing bracket
\1\2 ----- Gives you back the two captured things,
in this order, with no space inbetween
希望它有所帮助,但同样,你需要自己寻找替换c#。