我正在 .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/