C# RegExp
http://somelink.com/somepage.html или http://somelink.com/somepage.php или http://somelink.com/somepage.aspx).
Как делаю:
В итоге получаю все ссылки, даже на картинки. Пытаюсь установить фильтр на расширение и получаю в итоге вобще ноль совпадений :(
Смысл: соединяюсь с сервером, беру страницу. Надо спарсить все ссылки оттуда (то есть конкретные адреса,
Как делаю:
Код:
MatchCollection result = Regex.Matches(content, @"^(http)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
В итоге получаю все ссылки, даже на картинки. Пытаюсь установить фильтр на расширение и получаю в итоге вобще ноль совпадений :(
Код:
Regex regex = new Regex(@"http://([\w\-\.\s""]+/?)+",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
RegexOptions.IgnoreCase | RegexOptions.Compiled);
Код:
MatchCollection result = Regex.Matches(content, @"(http)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*(\.[phtmlasx]{2,4})", RegexOptions.Multiline | RegexOptions.IgnoreCase);
Сейчас эта штука выбирает все ссылки, расширение у которых php, asp, aspx, html, htm. Теперь надо прикрутить, чтобы также парсились ссылки со строкой запроса, например, http://somesite.com/somepage.php?somevar=someval
Вот это выражение
MatchCollection result = Regex.Matches(content, @"(http)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*(\.[phtmlasx]{2,4})([\?])?([0-9a-z_!~*'().;\?:@&=+$,%#\-])*", RegexOptions.Multiline | RegexOptions.IgnoreCase);
выбирает адреса такого типа, как http://somesite.com/somepage.php?somevar=someval
но, есть одно большое но: если задать адрес без хоста, то есть просто somepage.php?somevar=someval, то он игнорируется. Как надо подправить выражение, может, подскажите?