我有一个vb.net类,可以在通过电子邮件发送结果之前清除一些html。
以下是我需要删除的一些html的示例:
<div class="RemoveThis">
Blah blah blah<br />
Blah blah blah<br />
Blah blah blah<br />
<br />
</div>
我现在已经使用RegEx来完成我的大部分工作。 RegEx表达式在没有任何内容的情况下替换上面的块会是什么样的?
我尝试了以下内容,但出了点问题:
'html has all of my text
html = Regex.Replace(html, "<div.*?class=""RemoveThis"">.*?</div>", "", RegexOptions.IgnoreCase)
感谢。
答案 0 :(得分:4)
添加单行选项:
html = Regex.Replace(html, "<div.*?class=""RemoveThis"">.*?</div>", "", RegexOptions.IgnoreCase Or RegexOptions.Singleline)
来自MSDN:
单线:指定单线模式。更改点(。)的含义,使其匹配每个字符(而不是除\ n之外的每个字符)。
PS:使用正则表达式解析HTML是discouraged。您的代码将失败,例如:
<div class="RemoveMe">
<div>bla</div>
<div>bla</div>
</div>
答案 1 :(得分:3)
尝试:
RegexOptions.IgnoreCase Or RegexOptions.Singleline
RegexOptions.Singleline
选项会将点的含义从“匹配除新行之外的任何内容”更改为“匹配任何内容”。
此外,如果需要解析HTML,您应该考虑使用HTML解析器而不是正则表达式。