目前我正在从HTML字符串中删除某些格式化标记,并且想要了解正则表达式以便能够替换任何格式。对于初学者来说,这就是我所做的,但我希望它适用于任何字体大小,家庭等:
p.body = p.body.Replace("line-height: 14px;", "");
p.body = p.body.Replace("font-family: Arial, Helvetica, sans;", "");
p.body = p.body.Replace("font-size: 11px;", "");
我实际上不确定是否可以在C#replace中直接使用正则表达式。
答案 0 :(得分:4)
辅助功能
public static string RemoveStyle(string html, string style)
{
Regex regex = new Regex(style + "\\s*:.*?;?");
return regex.Replace(html, string.Empty);
}
用法:
string input = "color: red ; line-height: 10px ; font-family: Arial, Helvetica, sans; ";
input = RemoveStyle(input, "line-height");
input = RemoveStyle(input, "font-family");
// now, input = "color: red ;"
答案 1 :(得分:2)
要在C#中使用正则表达式,您需要使用Regex Class。
要仅匹配您提供的特定类型的样式,我会尝试匹配:
"line-height\\s:.*?;?"
"font-family\\s:.*?;?"
"font-size\\s:.*?;?"
或者,所有在一起:
Regex.Replace(htmlString, "(line-height|font-family|font-size)\\s:.*?;?", String.Empty);
答案 2 :(得分:2)
您可以删除整个样式属性..也许是这样?
Console.Write(Regex.Replace("<td style=\"text-align: right; vertical-align: bottom; width: 368px;\">", " style=\"[^\"]+\"", "")); // outputs "<td>"
答案 3 :(得分:1)
好吧,首先让我说你正在尝试的东西已成为新的旅行商问题。但是,我想引用this post,其中接受答案下方的帖子指出您可以实际上用正则表达式解析HTML - 您只是不想这样做。请阅读它,因为它将帮助您了解障碍。
现在,关于你的具体问题。
假设你有一些这样的HTMl:
<html>
<head>
</head>
<body>
<span style="line-height: 14px; font-family: Arial, Helvetica, sans; font-size: 11px;">Some text in the span</span>
</body>
</html>
你想找到并替换line-height
,你可以写一个这样的RegEx:
line-height.+?;
我认为你可以从RegEx推断其余部分。但是,问题是你 假设 总是有;
结束该语句 - 而且我不是 确定 你可以认为,这就是为什么每个人都告诉你不能使用正则表达式。但请跟我一起走一会儿。现在,在C#中你可能会写这样的东西(记录为here):
var newString = RegEx.Replace(htmlString, "(line-height:)(.+?)(;)", "$1 $3");
$1
和$3
将保留第一个和第三个捕获的表达式。