C#中锚html标签的正则表达式?

时间:2011-07-01 13:53:46

标签: c# regex

我需要在C#中为html源代码中的锚标记使用正则表达式尽可能通用。考虑一下这个HTML代码:

<a id="[constant]"
      href="[specific]"
    >GlobalPlatform Card Specification 2.2
    March, 2006</a>

通过[常量]我的意思是该值是一个常量字符串,所以它没有问题。通过[具体]我的意思是地址是一个简单而具体的字符串,因此它的正则表达式很简单。主要问题是我无法处理锚标签中间的换行符。之前我写过这个正则表达式,除了处理锚标记标题之间的换行符之外,效果很好。

<a[\\s\\n\\r]+id=\"[constant]"[\\s\\n\\r]+href=\"[specific]"[\\s\\n\\r]*>[\\s\\n\\r]*[^\\n\\r]+[\\s\\n\\r]*</a>

请帮帮我

2 个答案:

答案 0 :(得分:6)

在解析HTML时,你应该远离正则表达式,并使用像HTML Agility Pack这样的HTML解析器。

为了帮助您入门,请检查解析单个锚标记的简单程度。

HtmlDocument doc = new HtmlDocument();

doc.LoadHtml(@"<a id=""[constant]""
      href=""[specific]""
    >GlobalPlatform Card Specification 2.2
    March, 2006</a>
");

var anchor = doc.DocumentNode.Element("a");

Console.WriteLine(anchor.Id);
Console.WriteLine(anchor.Attributes["href"].Value);

打败正则表达式,你不觉得吗? :)

答案 1 :(得分:2)

如果您使用的是C#,则可以在创建Regex时定义选项多行,

Regex r = new Regex(pattern, RegexOptions.Multiline);