Регуля?рные выраже?ния (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэ?кспы или ре?гексы) — это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). По сути это строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска.
Итак, приступим:
^ - Начало строки
$ - Конец строки
. - Любой символ кроме переводов строки (без параметра /.../s)
[ ... ] - Любой из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [a-f] означает любую букву из числа a, b, c, d, e, f.
[^ ... ] - Ни один из перечисленного набора символов. Внутри квадратных скобок не работают другие операторы, но можно пользоваться метасимволами. С помощью дефиса можно указывать наборы символов: от первого до последнего. Например, [^0-9] означает любой символы, кроме 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
\# - Следующий за слэшем символ # (кроме a-z и 0-9). Например, \\ означает символ \, \. означает символ . (точка), \$ означает символ $ и т. д.
\b - Начало слова
\B - Конец слова
[[:alnum:]] - буквенно-цифровые символы
[[:digit:]] - десятичные цифровые символы
[[:xdigit:]] - шестнадцатеричные цифровые символы
[[:alpha:]] - буквенные символы
[[:upper:]] - прописные буквенные символы
[[:lower:]] - строчные буквенные символы
[[:punct:]] - знаки пунктуации
[[:space:]] - символы пробела
[[:blanc:]] - символы табуляции и пробела
[[:print:]] - печатные символы
[[:cntrl:]] - управляющие символы
[[:graph:]] - печатные символы, за исключением пробельные
\xNN - NN - шестнадцатеричный код ASCII-символа (\x20 - пробел, \x4A - J, \x6A - j и т. д.)
\t - символ табуляции
\n - новая строка
\r - перевод каретки
\а - перевод формата
\v - вертикальная табуляция
\a - звонок
\e - escape
\033 - восьмеричная запись символа
\x1A - шестнадцатеричная
\c - control символ
\l - нижний регистр следующего символа
\u - верхний регистр -//-
\L - все символы в нижнем регистре до \E
\U - в верхнем -//-
\E - ограничитель смены регистра
\Q - отмена действия как метасимвола
\w - алфавитно-цифровой или '_' символ
\W - не -//-
\s - один пробел
\S - один не пробел
\d - одна цифр
\D - одна не цифра
\b - граница слова
\B - не граница слова
\A - начало строки для каждой строки в многострочной строке
\Z - конец строки для каждой строки в многострочной строке
\G - конец действия m//g
( ... ) - Сгруппировать символы в один паттерн и запомнить
| - Предыдущий или следующий паттерн (логическое "ИЛИ")
* - Ноль или больше раз
+ - Один или больше раз
? - 0 или 1 раз предыдущая маска
{n} - Повторять n раз
{n,} - Повторять n или больше раз
{n,m} - Повторять от n до m раз
?#N - Это оператор "просмотра назад". N - число символов для просмотра.
?~N - Отрицание просмотра назад.
?= - Просмотр вперед.
?! - Отрицание просмотра вперед.
i - не различать строчные и заглавные буквы.
m - считать строку многострочной.
s - однострочная строка.
x - расширенный синтаксис ( использование пробелов и комментариев)
e - после выполнения стандартных подстановок в заменяемой строке интерпретирует ее как PHP-код и использует результат для замены искомой строки.
A - соответствие шаблону будет достигаться только в том случае, если он соответствует началу строки, в которой производится поиск.
D - метасимвол $ в шаблоне соответствует только окончанию обрабатываемых данных. Без этого модификатора метасимвол $ соответствует также позиции перед последним символом, в случае, если им является перевод строки (но не распространяется на любые другие переводы строк). Данный модификатор игнорируется, если используется модификатор m. В языке Perl аналогичный модификатор отсутствует.
S - если данный модификатор используется, проводится дополнительный анализ шаблона. В настоящем это имеет смысл только для фиксированных шаблонов, не содержащих переменных ссылок.
U - модификатор инвертирует жадность квантификаторов, таким образом они по умолчанию не жадные. Но становятся жадными, если за ними следует символ '?'. Такая возможность не совместима с Perl. Модификатор U также может использоваться внутри шаблона, при помощи '?U' записи.
X - включает дополнительную функциональность PCRE, которая не совместима с Perl: любой обратный слеш в шаблоне, за которым следует символ, не имеющий специального значения, приводят к ошибке. Это обусловлено тем, что подобные комбинации зарезервированы для дальнейшего развития. По умолчанию же, как и в Perl, слеш со следующим за ним символом без специального значения трактуется как as опечатка. На сегодняшний день это все возможности, которые управляются данным модификатором
u - включает дополнительную функциональность PCRE, которая не совместима с Perl: шаблоны обрабатываются как UTF8 строки. Модификатор u доступен в PHP 4.1.0 и выше для Unix-платформ, и в PHP 4.2.3 и выше для Windows платформ.
(?#комментарий) - комментарий в теле шаблона.
(?:шаблон) - группировка как и '( )', но без обратной ссылки
(?=шаблон) - "заглядывание" вперед. Например /\w+(?=\t)/ соответствует слову, за которым идет табуляция, но символ '\t' не включается в результат.
\ЧИСЛО - Ссылка внутри регэкспа на его же разобранную скобку, где ЧИСЛО - номер нужной группы (скобки). Этот оператор работает с некоторыми ограничениями на тип ссылаемого блока - он работает, только если в ссылаемой скобке нет операторов повторения.