Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Регулярные выражения в nginx

#регулярные_выражения #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. Регулярные выражения - специальный декларативный язык. Выучить его не так просто, как может показаться на первый взгляд. Его декларативная природа не позволяет использовать опыт и знания, приобретенные скажем в императивных языках программирования. Поэтому изучая его следует запастись терпением - это может занять время. Квантификаторы и спец.символы придется выучить наизусть и добиться полного понимания их работы, как операторов ветвления и циклов в императивных языках. В замен вы получаете очень компактный инструмент для манипуляции строк.

Комментариев нет:

Отправить комментарий