提取链接正则表达式c#

发布于 2024-11-14 17:13:25 字数 677 浏览 2 评论 0 原文

过去两个小时我一直在尝试解决这些问题,但似乎找不到任何解决方案。

我需要从 HTML 文件中提取链接。有 100 多个链接,但其中只有 25 个有效。

有效链接放置在

首先,我遇到(并且仍然)逐字字符串内双引号的问题。因此,我已逐字替换为“正常”字符串,这样我就可以使用 \" 代替 " 但问题是我编写的这个 Regex 不起作用,

Match LinksTemp = Regex.Match(
                              htmlCode,
                              "<td><a href=\"(.*)\">",
                              RegexOptions.IgnoreCase);

因为我得到 " 作为输出而不是 http://www.google.com

任何人都知道我该如何解决这个问题问题以及如何在逐字字符串中使用双引号(示例@" <>"das"sa")

I've been trying to solve these problem for last two hours but seems like I can't find any solution.

I need to extract links from an HTML file. There are 100+ links, but only 25 of them are valid.

Valid links are placed inside

<td><a href=" (link) ">

First I had (and still have) a problem with double quotes inside verbatim strings. So, I have replaced verbatim with "normal" strings so I can use \" for " but the problem is that this Regex I have written doesn't work

Match LinksTemp = Regex.Match(
                              htmlCode,
                              "<td><a href=\"(.*)\">",
                              RegexOptions.IgnoreCase);

as I get "<td><a href="http://www.google.com"> as output instead of http://www.google.com

Anyone know how can I solve this problem and how can I use double quotes inside of verbatim strings (example @" <>"das"sa ")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你丑哭了我 2024-11-21 17:13:26

为什么不使用 HTML 解析 来解析它呢?这是又好又快的 HTML 解析。
示例:

   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;

Why not parse this with an HTML-parsing is good and fast HTML-Parsing.
example:

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

you need import using HtmlAgilityPack;

挽袖吟 2024-11-21 17:13:25

转义双引号示例:@"some""test"
正则表达式示例:""

    var match = Regex.Match(html, "<td><a href=\"(.*?)\">", 
RegexOptions.Singleline); //spelling error
    var url = match.Groups[1].Value;

另外,您可能想使用 Regex.Matches(...) Regex.Match(...)

Escaped double quotes sample: @"some""test"
Regex sample: "<a href=\"(.*?)\">"

    var match = Regex.Match(html, "<td><a href=\"(.*?)\">", 
RegexOptions.Singleline); //spelling error
    var url = match.Groups[1].Value;

Also you may want to use Regex.Matches(...) instead of Regex.Match(...)

甜柠檬 2024-11-21 17:13:25

如果你想获取每个元素,请使用如下代码:

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

If you want to take every elements use code simply like this:

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() );
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文