2013-04-02 2 views
0

Я хочу, чтобы разобрать адреса из заданного текста,RegEx в Разбираем URL из текста (текст Содержит HTML-теги)

ввода текста: -

<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(); 
+1

Возможно, вы можете использовать http://htmlagilitypack.codeplex.com, чтобы сначала получить все атрибуты href, чем использовать классическую манипуляцию строк для извлечения соответствующей части? –

+0

Обязательно http://stackoverflow.com/a/1732454/113586 – wRAR

ответ

0

Обратите внимание, что смешивание HTML и регулярных выражений не рекомендуется.

Но если вы ищете быстрый хак, вы можете использовать это регулярное выражение:

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

Здесь проверить эту ссылку: http://rubular.com/r/v0jqtAXMF9

0

RegExs построить ДКА и, следовательно, являются довольно дорогими, если вам нужно для извлечения данных из известного шаблона, вы можете использовать это,

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

В основном, используя линейный поиск индексов, а не комков plex DFAs

+0

Я не могу использовать Индекс ... Имею полную страницу Html .... также 20 Ссылки. Поэтому мне нужно использовать Regex .. –

Смежные вопросы