2011-12-24 59 views
1

在C#正则表达式 - 获取所有href和innerTexts?

我试图同时获得URLsInnerTexts从一个文本文件,我没有访问DOM对象我使用这样只有正则表达式的设备(仅文本文件)上使用。

<a href="/LinkClick.aspx?fileticket=a random text string">I want this text</a> 

我需要所有这些集合整个文本文件:

URL = /LinkClick.aspx?fileticket=a random text string 
TITLE = I want this text 
+2

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Joe 2011-12-24 20:22:53

+2

试图用RegEx解析数据并不是一个好主意。如果你有HTML文本文件,你可以访问DOM。例如,“使用System.Windows.WebBrowser ... HtmlDocument hdoc = HtmlPage.Document;” – paulsm4 2011-12-24 20:24:22

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1758162#1758162 – 2011-12-24 20:34:59

回答

0

正则表达式解析HTML?它在理论上是可能的,但我没有取得很大的成功,除非你可以确保你从好的,干净的XHTML开始。问题在于,合法的HTML并不是很好地形成,东西可以跨越线条,仍然是HTML,但是通过正则表达式。我建议您找到一些为您解析HTML的库,并将它们解析为DOM树或其他东西,然后通过DOM生成XPATH。 C#有一个HtmlDocument类,不是吗?在使用RegEx之前,我会尝试一下。

+0

正如我所说,我有一个有限的访问,不能解析HTML任何其他方式。我在Linux上使用分驱动设备运行它。 – 2011-12-24 21:00:20

0

你可以使用正则表达式像这样的:

\<a.+?href=(?<q>["'])(.+?)\k<q>.*?>([^\<]+) 

URL将组2的值和TITLE将组3

如果你的文件是有效的XHTML的价值,您还可以使用System.Xml名称空间中的类来解析文档,然后检索所有的<a>元素。