考虑:
<div><a href="http://anirudhagupta.blogspot.com/">Anirudha Web blog</a></div>
获取http://anirudhagupta.blogspot.com/
的正则表达式是什么
来自以下?
<div><a href="http://anirudhagupta.blogspot.com/">Anirudha Web blog</a></div>
如果你在C#中提出一些好的建议。我也喜欢jQuery来做这件事。
答案 0 :(得分:1)
如果您想使用jQuery,您可以执行以下操作。
$('a').attr('href')
答案 1 :(得分:0)
又快又脏:
href="(.*?)"
好的,让我们使用另一个正则表达式来解析URL。这来自RFC 2396 - URI Generic Syntax: Parsing a URI Reference with a Regular Expression
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
当然,您可以在HTML代码中使用相对URL地址,您需要以其他方式解决这些问题。我建议您使用C#Uri Constructor (Uri, String)
。
答案 2 :(得分:0)
最简单的方法是使用以下正则表达式。
/href="([^"]+)"/
这将从第一个引号中获取所有字符,直到找到作为引号的字符。在大多数语言中,这是获取带引号的字符串的最快方法,它本身不能包含引号。引用应在属性中使用时进行编码。
UPDATE :用于解析网址的完整Perl程序如下所示:
use 5.010;
while (<>) {
push @matches, m/href="([^"]+)"/gi;
push @matches, m/href='([^']+)'/gi;
push @matches, m/href=([^"'][^>\s]*)[>\s]+/gi;
say for @matches;
}
它从stdin读取并打印所有URL。它负责三个可能的引用。与curl
一起使用可查找网页中的所有网址:
curl url | perl urls.pl
答案 3 :(得分:0)
执行此操作的正确方法是将HTML加载到C#XML解析器中,然后使用XPath查询URL。这样您根本不必担心解析。
答案 4 :(得分:-2)
您不需要复杂的正则表达式或HTML解析器,因为您只想提取链接。这是一种通用的方法。
data="""
<html>
abcd ef ....
blah blah <div><a href="http://anirudhagupta.blogspot.com/">Anirudha Web blog</a></div>
blah ...
<div><a href="http://mike.blogspot.com/">Mike's Web blog
</a></div>
end...
</html>
"""
for item in data.split("</a>"):
if "<a href" in item:
start_of_href = item.index("<a href") # get where <a href=" is
print item[start_of_href+len('<a href="'):] # print substring from <a href onwards.
以上是Python代码,但您背后的想法可以适应您的C#语言。使用"</a>"
作为分隔符拆分HTML字符串。浏览每个拆分字段,检查"href"
,然后在"href"
之后获取子字符串。这将是你的链接。