Используя это определение URI
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
Я хочу разделить это на три группы;1) схема + иерархия, 2) запрос, 3) фрагмент.
Некоторые примеры:
http://foo.com/bar?k1=v1&k2=v2#fragment = [http://foo.com/bar, ?k1=v1&k2=v2, #fragment]
http://foo.com/bar?k1=v1&k2=v2 = [http://foo.com/bar, ?k1=v1&k2=v2, ]
http://foo.com/bar#fragment = [http://foo.com/bar, , #fragment]
http://foo.com/bar = [http://foo.com/bar, , ]
На данный момент у меня есть .+(\?[^#]+)(.*)?$
, который обрабатывает случаи 1 и 2, 4 нетсовпадение, что нормально, но у меня возникают проблемы при попытке изменить это для работы для случая 3.
Можно предположить, что URI правильно сформирован, нас заботит только наличие ?
и #
.
Контекст: у меня есть вход URI, который может содержать запрос и / или фрагмент, и мне нужно добавить к нему дополнительные параметры запроса.Таким образом, оценивая присутствие каждой группы, я могу выяснить, как мои параметры должны быть вставлены / добавлены в URI.
Реализация в Java.
Заранее спасибо.