C#:解析超链接及其描述的优秀正则表达式是什么?

请考虑不区分大小写,空白区域以及在HREF标记周围使用单引号(而不是双引号)。

另请考虑获取<a>标签中包含其他标签的超链接,例如<b><i>

===============>>#1 票数:6 已采纳

只要没有嵌套标签(并且没有换行符),以下变体就可以正常工作:

<a\s+href=(?:"([^"]+)"|'([^']+)').*?>(.*?)</a>

一旦嵌套标签发挥作用,正则表达式就不适合解析。 但是,您仍然可以通过应用现代解释器的更高级功能(取决于您的正则表达式计算机)来使用它们。 例如.NET正则表达式使用堆栈; 我找到了这个:

(?:<a.*?href=[""'](?<url>.*?)[""'].*?>)(?<name>(?><a[^<]*>(?<DEPTH>)|</a>(?<-DEPTH>)|.)+)(?(DEPTH)(?!))(?:</a>) 

资料来源: http//weblogs.asp.net/scottcate/archive/2004/12/13/281955.aspx

===============>>#2 票数:3

StackOverflow中查看此示例:用于解析网页链接的正则表达式?

使用HTML Agility Pack,您可以解析html,并使用HTML的语义提取详细信息,而不是破坏正则表达式。

===============>>#3 票数:1

我找到了这个,但显然这些家伙有一些问题。

编辑:( 它的工作原理!)
我现在已经完成了自己的测试,发现它有效,我不知道C#所以我不能给你一个C#的答案,但我知道PHP,这里是我在运行它时得到的匹配数组:

<a href="pages/index.php" title="the title">Text</a>

array(3) { [0]=> string(52) "Text" [1]=> string(15) "pages/index.php" [2]=> string(4) "Text" } 

===============>>#4 票数:1

有一个处理大多数情况的正则表达式 ,但我相信它在多行注释中匹配HTML。

它是使用.NET语法编写的,但应该很容易翻译。

===============>>#5 票数:0

我现在就把这个片段扔到那里我已经有了它。这是一个不太贪婪的版本。 如果输入有多个超链接,原始将无法工作。 下面的代码将允许您遍历所有超链接:

static Regex rHref = new Regex(@"<a.*?href=[""'](?<url>[^""^']+[.]*?)[""'].*?>(?<keywords>[^<]+[.]*?)</a>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public void ParseHyperlinks(string html)
{
   MatchCollection mcHref = rHref.Matches(html);

   foreach (Match m in mcHref)
      AddKeywordLink(m.Groups["keywords"].Value, m.Groups["url"].Value);
}

===============>>#6 票数:0

这是一个与平衡标签匹配的正则表达式。

(????(>()|(< - DEPTH>)|)+)(?!(深度)()):(?? “” '[ “”'] *>)(?: )

  ask by Krishna Kumar translate from so

未解决问题?本站智能推荐:

1回复

sed中的正则表达式可删除超链接并保留链接文本

在mysql dump中,我想删除包含某个类的所有链接标签,并(始终)只保留标签中包含的一个单词。 标签结构: <a ..potential-other-stuff.. class="lexicon-term" ..potential-other-stuff.. >medi
4回复

正则表达式,用于查找不在超链接中的URL

有很多正则表达式可以匹配URL。 但是,我正在尝试匹配未出现在<a>超链接标记内的URL( HREF ,内部值等)。 因此,这些中的任何URL都不应匹配: 应匹配<a></a>以外的任何网址。 我尝试过的一种方法是使用否定前瞻来查看URL之后
9回复

用于解析网页链接的正则表达式?

我正在寻找一个.NET正则表达式从网页中提取所有URL,但是没有找到一个足够全面的URL来涵盖指定链接的所有不同方法。 还有一个问题: 是否有一个正则表达式来统治它们 ? 或者我最好使用一系列不那么复杂的正则表达式,只使用对原始HTML的mutliple传递? (速度与可维护性)
1回复

正则表达式以超链接返回描述

嗨,我正在使用此代码: 并试图删除以下超链接: 我的目标是返回超链接描述“ demo”,但是当尝试用空字符串替换匹配项时,所有内容都将被替换。 所需结果: 请帮忙 谢谢!
4回复

正则表达式解析来自html代码的链接

我正在研究一个接受字符串(html代码)的方法,并返回一个包含in中包含的所有链接的数组。 我已经看到了一些像html能力包这样的选项,但它看起来比这个项目要求的要复杂一些 我也对使用正则表达式感兴趣,因为我对它一般没有太多经验,我认为这将是一个很好的学习机会。 到目前为止我的
1回复

使用正则表达式从文本中删除html超链接锚点(在python,pyqt4中)

在我的QTextBrowser中,我检测到像“www.test.com”这样的链接 当对QTextBrowser进行进一步操作时,将再次使用text.toHtml()接收文本,然后再次进行解析。 这导致级联超链接。 所以我想在再次解析之前删除要删除的超链接HTML。 例如,文本
2回复

正则表达式链接网址忽略现有链接

我已经构建了一个正则表达式,在网址周围放置一个锚标记,如下所示: 它忽略了大小写,它也忽略了已经在链接中的URL,例如: 我需要做的最后一点是链接一个不在协议之前的URL,但至少以www。开头,例如: 我保存的正则表达式可以在这里看到和调整: https://reg
3回复

正则表达式

我正在尝试获取以下标签之间的所有文本,但这只是不行 我已经编写了提取函数以将html作为字符串获取。 我在看html敏捷包的示例,但没有文件另存为html docs
2回复

正则表达式,解析img src内容并用其他链接替换它

我需要在我的网站上制作下一个功能:用户编写文章并在其中附加图像,图像通常不存储在localhost上。 我需要将此图像下载到localhost并替换localhost映像的链接。 例如: 脚本将找到src内容,下载图像并将其替换为: 我理解如何从代码中解析所有src :
1回复

仅使用正则表达式解析ID [重复]

这个问题已经在这里有了答案: 如何在JavaScript正则表达式中访问匹配的组? 18个答案 使用此正则表达式/var userId = (\\d+)/ ,我可以找到用户的ID。 除了返回"var userId = 117051"而不是"var userId