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