Привет, ребята. Я пытаюсь составить регулярное выражение, чтобы оно соответствовало всем URL-адресам:
и для соответствия URL, которые имеют '#' или '? «Только до персонажа, прежде чем эти 2. Сюда http://example.com/index.php?p=Hey -> http://example.com/index.php
Код регулярного выражения, который у меня есть, хорошо работает при выборе только определенных типов файлов или папок, кроме одного случая:
Любая помощь приветствуется. Спасибо всем.
Это регулярное выражение:
^(?<protocol>http(s?))://(?<domain>[^/\r\n#?]+)(?<path>/[^?#]*(?:html|php|/))?
Это может делать то, что вы хотите:
^(?<protocol>http(s?))://(?<domain>[^/\s#?]+)(?<path>/[^\s#?]*)?(?<query>.*)?
Запрос будет содержать остаток, который вы можете игнорировать.
Не уверен, какой язык вы используете, но регулярные выражения могут не понадобиться для этого, если у вас уже есть список URL-адресов.
В C # вы можете сделать что-то вроде этого:
string a = "http://example.com/index.php?p=Hey"; string b = a.Remove(a.IndexOfAny(new char[] {'?', '#'}, 0));