Полный цикл в digital

Шпаргалка по регулярным выражениям

Спецсимволы и обычные знаки
Спецсимволы $ ^ . * + ? \ { } [ ] ( ) |
Обычные знаки @ : , ' " ; - _ = <> % # ~ `& ! /
Спецсимволы
Символ Аналог Описание
. Любой символ кроме \n и перевода строки
\ Экранирование спец символа
| [] Логическое «или»
\d [0-9] Все цифры
\D [^\d] Все не цифры
\s [\t\v\r\n\f]
\t табуляция
\v вертикальная табуляция
\r возврат каретки
\n новая строка
\f конец страницы
Все символы пробела, включая переносы строк, табуляции и неразрывные пробелы
\S [^\s] Все символы, кроме пробела, переноса строк, табуляции и неразрывного пробела
\w [0-9a-z_] Все цифры или буквы включая знак подчеркивания (кириллица не входит в буквы)
\W [^\w] Любой символ, кроме цифры, буквы или знака подчеркивания
Якоря
Символ Пример Описание
^
replace(#^..ше#, '!')
Привязка к началу строки, по умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символ ^ совпадает только с началом всего текста. Когда установлен модификатор m, ^ совпадает с началом отдельных строк
$
replace(#..ше$#, '!')
Привязка к концу строки, по умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символ $ совпадает только с концом всего текста. Когда установлен модификатор m, $ совпадает с концом отдельных строк
Ограничитель
Символ Пример Описание
# / &
replace(#..ше$#, '!')
replace(/..ше$/, '!')
replace(&..ше$&, '!')
В качестве ограничителей могут выступать не только #, но и любые другие символы (только не буквы и не цифры).Всё зависит от того, что мы хотим использовать внутри выражения. Если будет использована решётка, то внутри её придётся экранировать. Но если поставить ограничители &, то решётку внутри них не придётся экранировать.
Квантификаторы символьные
Символ Аналог Описание
+ {1,} Символ повторяется один или более раз (оператор действует на тот символ, который стоит перед ними)
* {0,} Символ повторяется ноль или более раз (оператор действует на тот символ, который стоит перед ними)
? {0,1} Символ повторяется ноль или один раз, может присутствовать или нет (оператор действует на тот символ, который стоит перед ними)
Квантификаторы {}
Символ Пример Описание
{5}
replace(#ш{5}#, '!')
Пять повторений
{2,5}
replace(#ш{2,5}#, '!')
От двух до пяти повторений (оба включительно)
{2,}
replace(#ш{2,}#, '!')
Повторяется два и более раз
{m,n}?
replace(#ш{m,n}?#, '!')
Повторяется минимальное количество раз
{m,}?
replace(#ш{m,}?#, '!')
Повторяется указанное количество раз
Набор символов, логический оператор «или» [ ]
Символ Пример Описание
[abv]
replace(#[abv]#, '!')
Диапазон символов «любое из», работает как логический оператор или
[a-z]
replace(#[a-z]#, '!')
Диапазон маленьких латинских букв
[^a-z]
replace(#[^a-z]#, '!')
Исключающий диапазон символов «любое кроме маленьких латинских букв»
[A-Z]
replace(#[A-Z]#, '!')
Диапазон больших латинских букв
[^A-Z]
replace(#[^A-Z]#, '!')
Исключающий диапазон символов «любое кроме больших латинских букв»
[а-яё]
replace(#[а-яё]#, '!')
Диапазон маленьких русских букв, работает только с модификатором поддержки UTF-8 u
[А-ЯЁ]
replace(#[А-ЯЁ]#, '!')
Диапазон больших русских букв, работает только с модификатором поддержки UTF-8 u
[0-9]
replace(#[0-9]#, '!')
Диапазон цифр от 0 до 9
[.+-*/]
replace(#[.+-*/]#, '!')
Спецсимволы внутри [] становятся обычными символами. Это значит, что их не надо экранировать обратным слешем. Исключение составляют только сами [] и ^ которые нужно экранировать
Группа символов, логический оператор «и» ( )
Символ Пример Описание
()
replace(#(ab)#, '!')
Группирует вместе символы, содержащиеся в круглых скобках, найдет вместе стоящие ab
Карманы ( )
Символ Пример Описание
()
replace(#([а-я]+) ([а-я]+)#, '$1, $2')
Карман - это такой способ хранения части того, что мы ищем. Карманы появляются, если использовать скобки ( ). Их можно подставлять во второй параметр функции, используя порядковый номер и знак $.
Несохраняющие скобки (?: )
Символ Пример Описание
(?: )
replace(#(?:[а-я]+) ([а-я]+)#, '$1, $2')
Скобки () выполняют две функции - группировка символов и функцию кармана. А что делать, если нам нужно сгруппировать, но в карман не класть? Для решения такой проблемы придуманы специальные несохраняющие скобки (?: ) - они группируют, но не кладут в карман
Позитивный просмотр вперед (?= )
Символ Пример Описание
(?= )
replace('#aaa(?=x)#', '!', 'aaax'); 
// вернет '!x'
Ищет строку aaa и заменяет ее на !, но только если после aaa стоит x, а сам x при этом не заменит
Негативный просмотр вперед (?! )
Символ Пример Описание
(?! )
replace('#aaa(?!x)#', '!', 'aaab'); 
// вернет '!b'
Наоборот, говорит чего должно не быть. В следующем примере замена произойдет, только если после aaa не стоит x
Позитивный просмотр назад (?<= )
Символ Пример Описание
(?<= )
replace('#aaa(?<=x)#', '!', 'xaaa'); 
// вернет 'x!'
Ищет строку aaa и заменяет ее на !, но только если перед aaa стоит x, а сам x при этом не заменит
Негативный просмотр назад (?<! )
Символ Пример Описание
(?<! )
replace('#(?<!x)aaa#', '!' , 'baaa'); 
// вернет 'b!'
В следующем примере замена произойдет, только если перед aaa не стоит x
Позиции внутри строк
Символ Пример Описание
^ ^a Соответствует началу строки
aaa aaa
$ a$ Соответствует концу строки
aaa aaa
\A \Aa Соответствует началу текста
aaa aaa
aaa aaa
\z a\z Соответствует концу текста
aaa aaa
aaa aaa
\b a\b
\ba
Граница слова, утверждение: предыдущий символ словесный, а следующий нет, либо наоборот
aaa aaa
aaa aaa
\B \Ba\B Отсутствие границы слова
aaa aaa
\G \Ga Предыдущий успешный поиск, поиск остановился на 4-й позиции, где не нашлось a
aaa aaa
Модификаторы (флаги)
Символ Описание
g Ищет все совпадения со «строкой-шаблоном» (по умолчанию поиск останавливается после первого совпадения)
u Поддержка юникода, регулярка будет обрабатывать в кодировке UTF-8
x Все неэкранированные пробельные символы, которые находятся вне символьного класса, будут проигнорированы
i Регистронезависимый поиск (a и A считаются эквивалентными)
m Многостроковый режим. По умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символы ^ и $ совпадают только с началом и концом всего текста. Когда этот параметр установлен, ^ и $ совпадают с началом и концом отдельных строк
s Однострочность, контент считается одной строкой в отличие от режима по умолчанию, символ . включает в себя пробельные символы начинает совпадать с переносом строки, хотя по умолчанию нет
U Инвертирует "жадность" для каждого квантификатора (если же после квантификатора стоит ?, этот квантификатор перестает быть "жадным").
X Экранировка обычного символа приведет к ошибке, без X обычные символы можно экранировать, они все равно будут обозначать сами себя (исключение: цифры, они станут карманами)
Жадность
Символ Описание
? Жадность можно ограничивать всем операторам повторения, в том числе и ?, и {} и + и * - вот так: ?? и {}? и +? и *?
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг