C# http的正则表达式模式匹配

C# http的正则表达式模式匹配,c#,html,regex,href,C#,Html,Regex,Href,我想从网页的href中提取url…为此,我使用regex模式作为 “(?(http:[/][/]| www.)([a-z]|[a-z]|[0-9]|[/.]|[~])*)” 为了从html中提取href,我使用了以下模式 @“href=\”(?[^\\\\\\\\\\\\\\\\\\]](?=[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]](?(?[\\\\\\\\\\\\\\\\\\\])(?(?[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我想从网页的href中提取url…为此,我使用regex模式作为 “(?(http:[/][/]| www.)([a-z]|[a-z]|[0-9]|[/.]|[~])*)”

为了从html中提取href,我使用了以下模式 @“href=\”(?[^\\\\\\\\\\\\\\\\\\]](?=[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]](?(?[\\\\\\\\\\\\\\\\\\\])(?(?[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

但问题是…它不会从href中提取url,而是像“www.seo-sem.com”这样的url。结果我只得到了…“www.seo”…在连字符被截断后…请您建议一个更好的正则表达式模式从href中提取url…将感谢您…

使用。您可以使用Xpath查询它,因为它将HTML解析为类似
XmlDocument
的对象

有关不使用正则表达式解析HTML的原因,请参阅。

使用解析HTML。您可以使用Xpath查询它,因为它将HTML解析为类似
XmlDocument
的对象


有关不使用正则表达式解析HTML的原因,请参阅。

不要使用正则表达式解析HTML。找到一个像HTMLAgilityPack这样的简单库并使用它。还没有人发布这个链接吗?:)即使对于基本URI,匹配所需的正则表达式也是难看的(是的,大写U)。@rebus,实际上,这不是太多的HTML解析。它不试图对文档的实际结构做任何事情。对于简单地抓取任何看起来像
href='url'
regex的东西可能就足够了。(http://;https://)?([\w.-]+)([\w-]+\.[\w-]+)分别使用
\2
\3
反向引用子域和域可能会有所帮助,但它决不会捕获所有可能的域名。不要使用正则表达式解析HTML。找到一个像HTMLAgilityPack这样的简单库并使用它。还没有人发布这个链接吗?:)即使对于基本URI,匹配所需的正则表达式也是难看的(是的,大写U)。@rebus,实际上,这不是太多的HTML解析。它不试图对文档的实际结构做任何事情。对于简单地抓取任何看起来像
href='url'
regex的东西可能就足够了。(http://;https://)?([\w.-]+)([\w-]+\.[\w-]+)分别使用
\2
\3
反向引用子域和域可能会有所帮助,我解决了连字符问题…编辑过的正则表达式..无论如何谢谢..你都很棒..保持下去我解决了连字符问题…编辑过的正则表达式..无论如何谢谢..你都很棒..保持下去