Вопрос

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

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

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

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

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

Так как я должен изменить Regex?

Это было полезно?

Решение

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

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

В C #:

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top