我遇到了RegEx问题,并尝试从网页的HTML源代码中提取特定格式的HTML链接。
HTML源包含许多这些链接。链接格式为:
<a class="link" href="pagedetail.html?record_id=123456">RecordName</a>
对于每个匹配链接,我希望能够轻松提取以下两位信息:
任何人都可以帮忙解决这个问题,因为我完全陷入困境。我需要这个用于C#程序,所以如果有任何C#特定符号那么那将是很好的。感谢
TIA
答案 0 :(得分:0)
我觉得有点愚蠢地回答这个问题,因为通过对你的问题的两条评论应该很明显,但是......
You should not parse HTML with REGEX!
使用XML解析器,或者更好的是,使用专用工具,例如HTML Agility Pack(它仍然是XML解析器,但更适合使用HTML)。
答案 1 :(得分:0)
您可以使用TagRegex和EndTagRegex类来解析html字符串并查找所需的标记。您需要遍历html字符串中的所有字符以找出所需的标记。
e.g。
var position = 0;
var tagRegex = new TagRegex();
var endTagRegex = new EndTagRegex();
while (position < html.length)
{
var match = tagRegex.Match(html, position);
if (match.Success)
{
var tagName = match.Groups["tagname"].Value;
if (tagName == "a")
{ ... }
}
else if (endTagRegex.match(html, position).Success)
{
var tagName = match.Groups["tagname"].Value;
if (tagName == "a")
{ ... }
}
position++;
}
答案 2 :(得分:0)
人们会告诉你不应该用REGEX解析HTML。我认为这是一个有效的陈述。
但有时格式化的HTML格式很简单,看起来很容易就是你的。您可以使用一些正则表达式来完成这项工作。
例如,您可以使用此正则表达式并获取URL的组1和RecordName的组2
<a class="link" href="([^"]+)">([^<]+)<