#регулярные_выражения #nginx
При гуглении регулярных выражений мне попадаются только огромные статьи и толстые книги. А мне надо только понять как работает это: location ~* ^.+\.\w+$ { root /home/box/web/public; } Окей. Начал читать книгу, закончил три главы уже, а полного понимая того, что написано выше все еще нет и, судя по всему, если идти таким путем, то не скоро будет. Не могли бы вы просто в двух словах объяснить символику этого примера.
Ответы
Ответ 1
^ - означает, что соответствие будет искаться с начала строки, а не с любого символа. Выражение /box/ будет соответствовать и box-web и home-box-web, а /^box/ только первой строке. $ - означает привязку к концу строки /index\.php/ будет соответствовать и site.ru/index.php и site.ru/index.php?v=3, выражение /index\.php$/ будет соответствовать только первому варианту. .+ - любое количество символов. Точка - любой символ, комбинация .+ - один или больше любых символов. \. - Так как точка специальный символ, то для того, чтобы обозначить точку, ее нужно экранировать слешем. \w - любой символ, который может составить слово \w+ - любое количество таких символов (один или больше). Т.е. выражение ^.+\.\w+$ охватывает почти любой URL. Прицел изначально был на выражения вида hello/index.php. Регулярные выражения - специальный декларативный язык. Выучить его не так просто, как может показаться на первый взгляд. Его декларативная природа не позволяет использовать опыт и знания, приобретенные скажем в императивных языках программирования. Поэтому изучая его следует запастись терпением - это может занять время. Квантификаторы и спец.символы придется выучить наизусть и добиться полного понимания их работы, как операторов ветвления и циклов в императивных языках. В замен вы получаете очень компактный инструмент для манипуляции строк.
Комментариев нет:
Отправить комментарий