Ну, я думаю, что этот пост больше относится к питону. Вы также можете найти что-то похожее в ASP.NET.
Но если вы хотите разобрать его самостоятельно, вам следует обратиться к RFC 2396 (универсальный синтаксис URI) , который предоставляет регулярное выражение и разбивает его на компоненты в Приложении B:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
Цифры во второй строке приведены только для справки.
читаемость; они указывают ориентиры для каждого
подвыражение (то есть каждая парная скобка). Мы ссылаемся на
значение для подвыражения соответствует $. Например, соответствие
вышеприведенное выражение для
http://www.ics.uci.edu/pub/ietf/uri/#Related
приводит к следующим совпадениям подвыражения:
$1 = http:
$2 = http
$3 = //www.ics.uci.edu
$4 = www.ics.uci.edu
$5 = /pub/ietf/uri/
$6 = <undefined>
$7 = <undefined>
$8 = #Related
$9 = Related
где указывает, что компонент отсутствует, так как
это случай для компонента запроса в приведенном выше примере.
Таким образом, мы можем определить стоимость четырех компонентов и
фрагмент как
scheme = $2
authority = $4
path = $5
query = $7
fragment = $9
и, двигаясь в обратном направлении, мы можем воссоздать ссылку на URI
из его компонентов с использованием алгоритма в шаге 7 раздела 5.2.
EDIT
После небольшого поиска в Google я нашел это в ASP.NET: System.Uri
, например ::
Uri uri = new Uri("http://www.ics.uci.edu/pub/ietf/uri/#Related");
Console.WriteLine(uri.AbsoluteUri);
Console.WriteLine(uri.Host);