Регулярное выражение для URL C # - PullRequest
0 голосов
/ 21 ноября 2010

В моей программе на C # я написал функцию поиска Google, которая работает путем извлечения источника с каждой страницы и получения URL через регулярное выражение.

Мое действительное регулярное выражение:

(?:(?:(?:http)://)(?:w{3}\\.)?(?:[a-zA-Z0-9/;\\?&=:\\-_\\$\\+!\\*'\\(\\|\\\\~\\[\\]#%\\.])+)

В настоящее время это работает хорошо, но я получаю, например, URL-адреса, такие как http://www.example.com/forums/arcade.php?efdf=332

. Я просто хочу в этом случае получить URL без ?efdf=332 в конце.

Так какя должен изменить регулярное выражение?

Ответы [ 2 ]

1 голос
/ 21 ноября 2010
http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+

делает то же самое, что и ваше регулярное выражение (я удалил много ненужных слов), но перестает сопоставлять ссылку до ?.

в C #:

Regex regexObj = new Regex(@"http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+")

Тем не менее, я не уверен, что это такой хороший способ сопоставления URL-адресов (как насчет https, ftp, mailto и т. Д.?) * 10101 *

0 голосов
/ 21 ноября 2010

Вы можете использовать класс Uri для доступа к различным частям URL-адреса и либо удалить строку запроса с конца, либо объединить нужные части.

...