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

Регулярное выражение - это шаблон, с которым сравнивается указанная строка слева направо.

  • совместимы с многобайтовыми строками
  • разделитель - используется в начале и конце каждого шаблона, обычно это "/", "#", "~", "!" или скобки: {pattern}
  • жадность - по умолчанию максимальное совпадение возвращается для каждого символа

Метасимволы

Сила регулярных выражений исходит из возможности использовать условия и повторения в шаблоне. Они записываются при помощи метасимволов, которые специальным образом интерпретируются.

Существуют два различных набора метасимволов: те, которые используются внутри квадратных скобок, и те, которые используются вне квадратных скобок. Вне квадратных скобок используются следующие метасимволы: Метасимволы вне квадратных скобок

Часть шаблона, заключенная в квадратные скобки называется символьным классом. В символьном классе используются следующие метасимволы. Метасимволы внутри квадратных скобок (символьном классе)

Подсказки

Выражение Описание
[abc] Один символ из: a, b или c
[^abc] Любой один символ кроме: a, b или c
[a-z] Любой один символ из интервала от a до z
[a-zA-Z] Любой один символ из интервала от a до z или от A до Z
^ Начало строчки
$ Конец строчки
\A Начатало строки
\z Конец строчки
* Любой один символ
\s Любой символ пробела (пробел, табуляция)
\S Любой символ кроме пробела
\d Любая цифра
\D Любой символ кроме цифры
\w Любой символ слова (буква, цифра, подчеркивание)
\W Любой символ кроме слова
(?:...) Группировать элементы, но не захватывать группу
(?=...) Positive lookahead
(?!...) Negative lookahead
(?<=...) Positive lookbehind
(?<!...) Negative lookbehind
(...) Захватить все внутри скобок
(a l b) a или b
a? a 1 или 0 раз
a* a 0 или много раз
a+ a 1 или много раз
a{3} a 3 раза
a{3,} a 3 или более раз
a{3,6} a от 3 до 6 раз

Функции

preg_match ($pattern, $subject, $matches, $flags, $offset)

  • Выполняет проверку на соответствие регулярному выражению
  • Останавливает поиск после первого совпадения
  • Возвращает 1, если было совпадение, 0 - если не было и FALSE - если была ошибка

preg_match_all ()

  • Выполняет глобальный поиск шаблона в строке.

preg_grep ($pattern, $array)

  • Возвращает массив вхождений, которые соответствуют шаблону.
    <?php
    // Возвращает все элементы массива,
    // содержащие числа с плавающей точкой
    $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);
    ?>
    

preg_filter ($pattern, $replace, $subject)

  • Производит поиск и замену по регулярному выражению.
  • Возвращает только те значения (возможно, преобразованные), в которых найдено совпадение.

preg_replace ($pattern, $replace, $subject)

  • Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement.

preg_replace_callback ($pattern, $callback, $subject)

  • Выполняет поиск по регулярному выражению и замену с использованием callback-функции.

$array = preg_split ($pattern, $string)

  • Разбивает строку по регулярному выражению.
  • Флаги:
    • PREG_SPLIT_NO_EMPTY - функция вернет только непустые подстроки.
    • PREG_SPLIT_DELIM_CAPTURE - выражение, заключенное в круглые скобки в разделяющем шаблоне, также извлекается из заданной строки и возвращается функцией.
    • PREG_SPLIT_OFFSET_CAPTURE - Если указан этот флаг, для каждой найденной подстроки будет указана ее позиция в исходной строке.

preg_quote ($sting, $optional_delimiter)

  • Экранирует символы в регулярных выражениях.
  • Возвращает экранированную строку.

preg_last_error ()

  • Возвращает код ошибки выполнения последнего регулярного выражения.