0

指定されたテキストから URL を解析したいのですが、

入力テキスト:-

 <h3 class="r"> <a
 href="/url?q=http://rakesh.agrawal-family.com/papers/vldbj03watermark.pdf&amp;sa=U&amp;ei=m2laUfD2AdDorQf0rYHoDw&amp;ved=0CBoQFjAA&amp;usg=AFQjCNFJOQCS471sWjxy5CkNbzDxzcD66A">
 <h3 class="r"> <a
 href="/url?q=http://www.cse.ust.hk/vldb2002/VLDB2002-proceedings/papers/S05P03.pdf&amp;sa=U&amp;ei=m2laUfD2AdDorQf0rYHoDw&amp;ved=0CCIQFjAD&amp;usg=AFQjCNHbfCk_51dKLupvs3KVVEDboK54xg">
 <h3 class="r"> <a
 href="/url?q=http://cvml.unige.ch/publications/postscript/99/VoloshynovskiyPereiraPun_eww99.pdf&amp;sa=U&amp;ei=m2laUfD2AdDorQf0rYHoDw&amp;ved=0CCYQFjAE&amp;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=(.*?)&amp;", 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();  
4

2 に答える 2

0

正規表現はDFAを構築するため、かなり高価です.既知のパターンからデータを抽出する必要がある場合は、これを使用できます.

url=line[i].substring(line[i].indexOf("q=")+1, line[i].indexOf(">\""));

複雑な DFA ではなく、基本的にインデックスの線形検索を使用する

于 2013-04-02T10:46:16.173 に答える
0

HTML と正規表現を混在させることはお勧めできません。

しかし、簡単なハックを探している場合は、次の正規表現を使用できます。

url\?q=\*\*[\'"]?([^\'" >]+)\*\*

ここでこのリンクを確認してください:http://rubular.com/r/v0jqtAXMF9

于 2013-04-02T10:07:34.043 に答える