如何编写多行RegEx表达式

时间:2010-01-12 14:21:58

标签: c# .net html vb.net regex

我有一个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)

感谢。

2 个答案:

答案 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解析器而不是正则表达式。