regexp

## # .htaccess RexExp ##

^ # начало строки

$ # конец строки

. # любой символ

# ИЛИ
? # ставится после символа/группы символов, который может присутствовать/отсутствовать.
Например, выражению “jpe?g” подойдет и строка “jpg”, и строка “jpeg”. Пример выражения с группой символов: “super-(puper-)?site”.
  • # ставится после символа/группы символов, который может отсутствовать или присутствовать неограниченное число раз подряд. Например, выражению “jpe*g” подойдут строки “jpg”, “jpeg” и “jpeeeeeeg”.
  • # действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, выражению “jpe+g” подойдут строки “jpeg” и “jpeeeeg”, но не “jpg”.
[] # перечисления допустимых символов.
Например, выражение “[abc]” равносильно выражению “a|b|c”, но вариант с квадратными скобками обычно является более оптимальным по быстродействию. Внутри скобок можно использовать диапазоны: например, выражение “[0-9]” равносильно выражению “[0123456789]”. Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках. Например, выражение “[^0-9]+” означает строку из любых символов, кроме цифр.
# ставится перед спецсимволами, если они нужны в своем первозданном виде.
Например, выражению “jpe+g” соответствует только одна строка “jpe+g”.
{3,9} # диапозон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть 3<=x<=9 символов.
Применяется в основном в модуле преобразований - синтаксис регулярных выражений преобразований, значение флагов.

Пример, проверяем строку HTTP запроса отправленную браузером серверу на предмет совпадения ее содержания определенному шаблону:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}/index.phpHTTP/

предположим что мы запросили индексную сраницу на сервере %{THE_REQUEST} = «GET /index.html HTTP/1.1» в таком случае мы читаем исходную строку содержащую фигурные скобки так “начало_полученных_данныхGETпробел/index.phpпробелHTTP/” т.е. может быть “GET”, а может быть “POST” могут быть и другие значения… просто символы, в зависимости от того чем и как мы запросим файл index.php на сервере.