Задать вопрос

Как составить сложное регулярное выражение?

Это только часть задачи.
Вначале нужно проверить проходит ли строка по регулярному выражению.

Сразу договоримся что / это разделитель и в случайные символы не входит.

Как бы обьяснить попроще....

Есть вот такая строка:
book/<name>|[a-z]|i/<:p>|[0-9]{2,3}|i/<:id>/<!:q>|^[a-z]+$|i


Она проверяет url из браузерной строки на соответствие:

<name> - имя переменной в которую попадет часть url
<:p> - имя необязательного параметра
<!:q> - имя обязательного параметра

В чем отличие переменной от параметра?
В ссылке переменная это просто что то что между //
А параметр это кода написано так /p/значение/

В общем я нанял программиста и он написал для меня этот роутер, но толку оказалось 0.
Так как он не правильно работает и сколько я не пытался его поправить, ничего не вышло.

Решил написать грамотно с 0 и самостоятельно.

Но для начала хочу понять как в регулярных выражениях учесть не обязательный параметр.

В регулярных выражениях есть алиасы, и как раз они мне подходят.
book/(?P<name>[a-z])

Как составить регулярное выражение вида:

book/любые символы/p/любое число/id/любые символы/q/любое число


При этом p/любое число может как быть в строке так и не быть, а может быть в таком виде p//

И еще /p/любое число/ и /id/любые символы/ и /q/любое число/ могут идти в любом порядке, например так

book/любые символы/q/любое число/id/любые символы/p/любое число


:)
жесть
  • Вопрос задан
  • 2893 просмотра
Подписаться 5 Комментировать
Подписчики вопроса 5 К ответам на вопрос (2)