RFC 2396 Универсальный синтаксис URI Август
1998
B. Разбор ссылки на URI с помощью регулярного выражения
Как описано в разделе 4.3, общий синтаксис URI не
достаточно для устранения неоднозначности компонентов некоторых форм URI.
Поскольку описанный в этом разделе «жадный алгоритм» идентичен
к методу устранения неоднозначности, используемому регулярными выражениями POSIX, он
Естественно и обычно используется регулярное выражение для разбора
потенциальные четыре компонента и идентификатор фрагмента URI
ссылка. * * +1010
Следующая строка - это регулярное выражение для разбиения
Ссылка URI на его компоненты.
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
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.
Оттуда вы сможете сравнивать фрагменты URL и определять шаблоны.