RegEx解析URL从文本(文本包含HTML标签)
本文关键字:文本 HTML 标签 包含 URL RegEx 解析 | 更新日期: 2023-09-27 18:06:54
我想从给定的文本中解析url,
输入文本:-
<h3 class="r"> <a
href="/url?q=http://rakesh.agrawal-family.com/papers/vldbj03watermark.pdf&sa=U&ei=m2laUfD2AdDorQf0rYHoDw&ved=0CBoQFjAA&usg=AFQjCNFJOQCS471sWjxy5CkNbzDxzcD66A">
<h3 class="r"> <a
href="/url?q=http://www.cse.ust.hk/vldb2002/VLDB2002-proceedings/papers/S05P03.pdf&sa=U&ei=m2laUfD2AdDorQf0rYHoDw&ved=0CCIQFjAD&usg=AFQjCNHbfCk_51dKLupvs3KVVEDboK54xg">
<h3 class="r"> <a
href="/url?q=http://cvml.unige.ch/publications/postscript/99/VoloshynovskiyPereiraPun_eww99.pdf&sa=U&ei=m2laUfD2AdDorQf0rYHoDw&ved=0CCYQFjAE&usg=AFQjCNGt54TSNY93PXgd4u4L3-E6C6P2jw">
预期输出:http://rakesh.agrawal-family.com/papers/vldbj03watermark.pdf http://www.cse.ust.hk/vldb2002/VLDB2002-proceedings/papers/S05P03.pdf http://cvml.unige.ch/publications/postscript/99/VoloshynovskiyPereiraPun_eww99.pdf 示例代码:-
Match match = Regex.Match(input, @"<h3 class=""r""> <a href=""/url'?q=(.*?)&", RegexOptions.IgnoreCase);
while (match.Success)
{
// Finally, we get the Group value and display it.
string key = match.Groups[1].Value;
Console.WriteLine(key);
match = match.NextMatch();
注意,不建议混合使用HTML和正则表达式。
但是如果你正在寻找一个快速的hack,你可以使用这个regex:
url'?q='*'*[''"]?([^''" >]+)'*'*
点击这里查看链接:http://rubular.com/r/v0jqtAXMF9
regex构建dfa,因此非常昂贵,如果需要从已知模式中提取数据,可以使用
url=line[i].substring(line[i].indexOf("q=")+1, line[i].indexOf(">'""));
基本上使用索引的线性搜索而不是复杂的dfa