过去两个小时我一直试图解决这些问题,但似乎找不到任何解决方案。
我需要从HTML
文件中提取链接。有100多个链接,但只有25个有效。
有效链接放在
中 <td><a href=" (link) ">
首先,我有(并且仍然)在逐字字符串中使用双引号的问题。所以,我已经用“普通”字符串替换了逐字,所以我可以使用\“for”但问题是我写的Regex
不起作用
Match LinksTemp = Regex.Match(
htmlCode,
"<td><a href=\"(.*)\">",
RegexOptions.IgnoreCase);
我将"<td><a href="http://www.google.com">
作为输出而不是http://www.google.com
任何人都知道如何解决这个问题,如何在逐字字符串中使用双引号(例如@“&lt;&gt;”das“sa”)
答案 0 :(得分:2)
转码双引号示例:@"some""test"
正则表达式示例:"<a href=\"(.*?)\">"
var match = Regex.Match(html, "<td><a href=\"(.*?)\">",
RegexOptions.Singleline); //spelling error
var url = match.Groups[1].Value;
您也可以使用Regex.Matches(...)
代替Regex.Match(...)
答案 1 :(得分:2)
如果你想让每个元素都像这样使用代码:
string htmlCode = "<td><a href=\" www.aa.pl \"><td> <a href=\" www.cos.com \"><td>";
Regex r = new Regex( "<a href=\"(.*?)\">", RegexOptions.IgnoreCase );
MatchCollection mc = r.Matches(htmlCode);
foreach ( Match m1 in mc ) {
MessageBox.Show( m1.Groups[1].ToString() );
}
答案 2 :(得分:1)
为什么不用HTML-parsing解析这是好的和快速的HTML-Parsing。 例如:
string HTML = "<td><a href='http://www.google.com'>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(HTML);
HtmlNodeCollection a = doc.DocumentNode.SelectNodes("//a[@href]");
string url = a[0].GetAttributeValue("href", null);
Console.WriteLine(url);
Console.ReadLine();
您需要导入using HtmlAgilityPack;