2011-07-01 33 views
2

我需要一个C#中的正则表达式作为html源代码中的定位标记,因为它是可能的。考虑下面的html代码:在C#中锚定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> 

请帮我

回答

6

你应该从正则表达式远离,当谈到解析HTML,并使用HTML解析器像HTML Agility Pack

并帮助您开始检查解析该单个定位标记的简单程度。

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); 

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

+0

我在哪里可以找到它? – moorara

+0

我在答案中提供了一个链接。 –

2

,如果你使用的是C#,您可以定义选项多而产生的正则表达式,

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