Регулярное выражение для ссылки
Есть файл, там куча html ссылок. Нужно вытащить из них URL
<a href="http://www.rsdn.ru/Forum/" target="_blank">Форум</a>
Нужно вытащить
http://www.rsdn.ru/Forum/
Вот что нарыл из регулярного выражения
Regex regex = new Regex(@"(\b\w+:\/\/\w+((\.\w)*\w+)*\.\w{2,3}(\/\w*|\.\w*|\?\w*\=\w*)*)" );
Но проблема в том, что она как то порой не правилно работает, тире вроде режет. Как его попроще написать на проверку?
Что бы было, что то типа
<a href="(.*)"
Почему кстати так не работает то?
Regex regex = new Regex("<a href=\"(.*)\"" );
Re: Регулярное выражение для ссылки
От:
vf
Дата: 20.03.11 16:44
Оценка:
СА>Почему кстати так не работает то?
Потому что точка жадная.
<a href="([^"]*)"
Re: Регулярное выражение для ссылки
Здравствуйте, Смирнов Алексей, Вы писали:
СА>СА><a href="(.*)"
СА>
СА>Почему кстати так не работает то?
А еще может быть
<a target="_blank" href="http://www.rsdn.ru/Forum/">Форум</a>
Re[2]: Регулярное выражение для ссылки
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Смирнов Алексей, Вы писали:
СА>>СА>><a href="(.*)"
СА>>
СА>>Почему кстати так не работает то?
S>А еще может быть
S>S><a target="_blank" href="http://www.rsdn.ru/Forum/">Форум</a>
S>
Кстати да, может и так. Но парситься страница, где точно как я написал.
<a href="([^"]*)"
Заработало, спасибо.
Подскажите, а вот если уже есть ссылки
http://www.rsdn.ru/Forum/
http://www.rsdn.ru/Forum/blabla
Как вытащить домен?
http://([^\"]*)/
Не хочет так работать. Некоторые урлы нормально, а некоторые не трогает...
Re: Регулярное выражение для ссылки
Здравствуйте, Смирнов Алексей, Вы писали:
СА>Почему кстати так не работает то?
СА>СА>Regex regex = new Regex("<a href=\"(.*)\"" );
СА>
new Regex("<a href=\"(.*
? )\"");
А вообще есть куча ньюансов. В книжке Mastering Regular Expressions автор приводит пример регулярного выражения для адресов электронной почты в полном соответствии с RFC — там чего-то страниц 6 мелким шрифтом. В случайх посложнее URL может быть заключен в одинарные кавычки, быть относительным или включать национальные симфолы.
Re[3]: Регулярное выражение для ссылки
Здравствуйте, Смирнов Алексей, Вы писали:
СА>Здравствуйте, samius, Вы писали:
СА>Подскажите, а вот если уже есть ссылки
СА>http://www.rsdn.ru/Forum/
СА>http://www.rsdn.ru/Forum/blabla
СА>Как вытащить домен?
Вытащить полный URL и создать System.Uri(string) . Из него вытащить все что нужно.
Re[4]: Регулярное выражение для ссылки
S>Вытащить полный URL и создать System.Uri(string) . Из него вытащить все что нужно.
Ах, ну да, совсем забыл.
new Regex("<a href=\"(.*?)\"");
Спасибо, заработало.
А вообще есть куча ньюансов.
Согласен, но тут я парсю как бы ссылки под одну гребёнку, поэтому тут упростилось всё.
Re: Регулярное выражение для ссылки
Здравствуйте, Смирнов Алексей, Вы писали:
СА>Есть файл, там куча html ссылок. Нужно вытащить из них URL
Файл-то HTML или как?
СА>СА><a href="http://www.rsdn.ru/Forum/" target="_blank">Форум</a>
СА>
СА>Нужно вытащить http://www.rsdn.ru/Forum/
Я, при парсинге ХТМЛ, вначале вытащиваю сам тег '<a href="
http://www.rsdn.ru/Forum/ " target="_blank">', а потом вытащиваю параметры со значениями, вот такой штуковиной:
(\w+)(?:=([\+\-\w]*)[>\s]|="([^\n\r"]*)")
Естессно значение во второй или в третьей группе будет — так что надо немного пошуршать.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re: Регулярное выражение для ссылки
Народ, подскажите, а как мне вытащить HTML код-текст из Дива?
<div class="text">
...
А тут какой то код, текст, куча энтеров и пробелов
...
</div>
Нужно то, что в этом диве, с классом text.
Вот это работать не хочет
new Regex("<div class=\"text\">(.*?)</div>" );
new Regex("<div class=\"text\">([^\"]*)</div>" );
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить