.net - 特定标签的正则表达式

标签 .net regex

我正在 .NET 项目中使用正则表达式来获取特定标记。我想匹配整个 DIV 标签及其内容:

<html>
   <head><title>Test</title></head>
   <body>
     <p>The first paragraph.</p>
     <div id='super_special'>
        <p>The Store paragraph</p>
     </div>
     </body>
  </head>

代码:

    Regex re = new Regex("(<div id='super_special'>.*?</div>)", RegexOptions.Multiline);


    if (re.IsMatch(test))
        Console.WriteLine("it matches");
    else
        Console.WriteLine("no match");

我要匹配这个:

<div id="super_special">
   <p>Anything could go in here...doesn't matter.  Let's get it all</p>
</div>

我以为 . 应该获取所有字符,但回车似乎有问题。我的正则表达式缺少什么?

谢谢。

最佳答案

拜托,拜托,帮自己一个的忙:使用 HTML 解析器来解析 HTML。严重地。这就是他们在那里的目的。

HTML 是一种非常复杂的语言。无论您多长时间调整、摆弄、修复、磨练您的正则表达式,总会有您遗漏的情况。

无论如何,您必须告诉您的 Regexp 引擎匹配多行而不是一行。在一些最流行的代码中,您可以通过应用 /m 修饰符来做到这一点。

但让我重复一遍:使用 HTML 解析器。每当有人使用 Regexp 解析 HTML 时,小猫就死了......

关于.net - 特定标签的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78978/

相关文章:

regex - 如何在vim中折叠所有出现的正则表达式?

字符串的正则表达式包含?

java - 如何忽略附加在单词上的标点符号和符号,以便在考虑字数统计时将它们全部视为相同?

python re 模块 - 用于提取文本片段的正则表达式

javascript - 如何使用字符串调用函数

.net - Windows 应用程序图标文件

.net - 我可以在 Express 中打开 VS2008 专业项目吗

regex - perl : how to split?

.Net,XmlDSigEx : CngKey. 使用来自 X509Certificate2 的公钥导入

c# - 无法使用 openxml 在 excel 中设置所需的背景颜色