Синтаксис регулярных выражений
Спец символы: «[ ] \ / ^ $ . | ? * + ( ) { }»
Если эти символы нужно представить в качестве символов текста, их следует экранировать обратной косой чертой «\».
Значения символов в регулярных выражениях:
- «^» — каретка, циркумфлекс или просто галочка. Начало строки;
- «$» — знак доллара. Конец строки;
- «.» — точка. Любой символ;
- «*» – знак умножения, звездочка. Любое количество предыдущих символов;
- «+» – плюс. 1 или более предыдущих символов;
- «?» – вопросительный знак. 0 или 1 предыдущих символов;
- «( )» – круглые скобки. Группировка конструкций;
- «|» – вертикальная линия. Оператор «ИЛИ»;
- «[ ]» – квадратные скобки. Любой из перечисленных символов, диапазон. Если первый символ в этой конструкции – «^», то массив работает наоборот – проверяемый символ не должен совпадать с тем, что перечислено в скобках;
- «{ }» – фигурные скобки. Повторение символа несколько раз;
- «\» – обратный слеш. Экранирование служебных символов.
Специальные метасимволы:
- \b — обозначает не символ, а границу между символами;
- \d — цифровой символ;
- \D — нецифровой символ;
- \s — пробельный символ;
- \S — непробельный символ;
- \w — буквенный или цифровой символ или знак подчеркивания;
- \W — любой символ, кроме буквенного или цифрового символа или знака подчеркивания.
В каких редакторах можно попробовать отборы с помощью регулярных выражений:
- Notepad++
- Visual studio code
- Онлайн сервис: https://regex101.com/
Примеры:
Цель | Выражение | Пример |
---|---|---|
Соответствует любому одиночному символу, кроме разрыва строки Дополнительные сведения см. в разделе Любой символ. | . | a.o совпадает с «ато» в слове «каток» и «aзo» в слове «азот», но не с «арто» в слове «картон» |
Соответствует нулю или большему числу вхождений предыдущего выражения (совпадение с максимальным числом символов). Дополнительные сведения см. в разделе Совпадение ноль или несколько раз: *. | * | a*r совпадает с «в» в слове «винт» и «ав» в слове «авто». |
Соответствует любому символу ноль или более раз. | .* | c.*e совпадает со «сне» в слове «снег», «сове» в слове «совет» и «скате» в слове «скатерть» |
Соответствует одному или большему числу вхождений предыдущего выражения (совпадение с максимальным числом символов) Дополнительные сведения см. в разделе Совпадение один или несколько раз: +. | + | e+d совпадает с «eed» в «feeder» и с «ed» в «faded». |
Сопоставление любого символа один или более раз. | .+ | e.+e совпадает с «eede» в «feeder», но в «feed» совпадения отсутствуют. |
Соответствует нулю или большему числу вхождений предыдущего выражения (совпадение с минимальным числом символов) Дополнительные сведения см. в разделе Совпадение ноль или несколько раз (ленивое совпадение): *?. | *? | \w*?d совпадает с «fad» и «ed» в «faded», но не со всем словом «faded», так как проверяется соответствие с минимальным числом символов. |
Соответствует одному или большему числу вхождений предыдущего выражения (совпадение с минимальным числом символов) Дополнительные сведения см. в разделе Совпадение один или несколько раз (ленивое совпадение): +?. | +? | e\w+? совпадает с «ee» в «asleep» и с «ed» в «faded», но в «fade» совпадения отсутствуют. |
Привязывает сопоставляемую строку к началу строки. | ^ | ^car совпадает с такими словами, как «продажа» и «процесс», только если они находятся в начале строки |
Привязывает сопоставляемую строку к концу строки. | \r?$ | car\r?$ совпадает со словом «car», только если оно находится в конце строки. |
Соответствует вхождению, только если оно находится в конце файла | $ | car$ совпадает со словом «car», только если оно находится в конце файла. |
Соответствует любому отдельному символу в наборе | [abc] | b[abc] совпадает с «ба», «бб» и «бв» |
Соответствует любому символу в диапазоне символов | [а-е] | be[n-t] совпадает с «bet» в слове «between», с «ben» в слове «beneath» и с «bes» в слове «beside», но в слове «below» совпадения отсутствуют. |
Запись и неявная нумерация выражения в скобках | () | ([a-z])X\1 совпадает с «аХа» и «бХб», но не с «аХб». «\1» относится к первой группе выражения «[а–я]». Дополнительные сведения см. в разделе Группы записи и шаблоны замены. |
Признание соответствия недействительным | (?!абв) | real(?!ity) совпадает со словами «реальный» и «реальность», но не со словом «реальная». Кроме того, находит второй элемент «реальн» (но не первый «реальн») в «реальнаяреальность». |
Соответствует любому символу, не входящему в указанный набор. Дополнительные сведения см. в разделе Отрицательная группа символов. | [^абв] | be[^n-t] совпадает с «bef» в слове «before», с «beh» в слове «behind» и с «bel» в слове «below», но в слове «beneath» совпадения отсутствуют. |
Совпадает с выражением до или после символа. | | | (sponge|mud) bath совпадает со строками «хвойный лес» и «лиственный лес» |
Экранирует символ, указанный за обратной косой чертой. | \ | \^ соответствует символу ^ |
Определяет количество вхождений предыдущего символа или группы. Дополнительные сведения см. в разделе Совпадение ровно n раз: {n}. | {n}, где n обозначает число вхождений. | x(ab){2}x совпадает с «xababx»x(ab){2,3}x совпадает с «xababx» и «xabababx», но не «xababababx» |
Сопоставление текста в категории Юникода. Дополнительные сведения о классах символов Юникода, см. в документе о свойствах символов в стандарте Юникода 5.2. | \p{X}, где «X» — число из Юникода. | \p{Lu} совпадает с «T» и «D» в «Thoma Doe» |
Соответствует границе слова | \b (вне класса символов \b определяет границу слова, а внутри класса \b символов определяет стирание назад) | \bin совпадает с «in» в «inside», но в «pinto» совпадения отсутствуют. |
Соответствует разрыву строки (то есть возврату каретки с последующим символом новой строки). | \r?\n | End\r?\nBegin совпадает со словами «Конец» и «Начало», только если «Конец» является последним словом в строке, а «Начало» — первым словом в следующей строке |
Соответствует любому алфавитно-цифровому знаку. | \w | a\wd совпадает с «акт» и «а1т», но не с «а т» |
Соответствует любому символу пробела. | \s | Public\sInterface совпадает с фразой «Открытый интерфейс» |
Соответствует любому символу десятичной цифры | \d | \d совпадает с «4» и «0» в «wd40». |