Регулярные выражения
Регулярное выражение - это шаблон, с которым сравнивается указанная строка слева направо.
- совместимы с многобайтовыми строками
- разделитель - используется в начале и конце каждого шаблона, обычно это "/", "#", "~", "!" или скобки: {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 ()
- Возвращает код ошибки выполнения последнего регулярного выражения.