На этой странице

Справочник регулярных выражений

Правило замены по регулярному выражению в преобразовании данных находит в текстовых значениях фрагменты по шаблону и заменяет их. Если вы раньше не работали с регулярными выражениями, начните с этой страницы: здесь собраны основы и самые частые задачи. Подробнее синтаксис разобран в англоязычном интерактивном учебнике regexone.com.

Редактор правила

В редакторе правила четыре части:

  • Шаблон поиска — регулярное выражение, совпадения с которым ищутся в тексте ячейки
  • Заменяющий текст — то, что встаёт на место каждого совпадения
  • Опции — флажки Глобально (заменять все совпадения), С учётом регистра и Многострочный режим
  • Просмотр — первое непустое значение первой выбранной переменной, есть в нём совпадения или нет: совпадения подсвечены, группы захвата выделены разными цветами, ниже показан результат замены

Просмотр обновляется по мере ввода, поэтому шаблон удобно отладить ещё до сохранения правила.

Основы шаблонов

Шаблон С чем совпадает Пример совпадения
abc буквальный текст «abc» «abcdef»
. любой одиночный символ «abc»
\d любая цифра (0–9) «возраст 42»
\D любой символ, кроме цифры «42!»
\w латинская буква, цифра или знак подчёркивания «hello»
\W любой символ, кроме латинской буквы, цифры и знака подчёркивания (кириллическая буква тоже) «hello !»
\s любой пробельный символ (пробел, табуляция, перевод строки) «hello world»
\S любой непробельный символ «hello»

Квантификаторы

Квантификатор Значение Пример
* 0 и более раз \d* совпадает с «», «5», «42», «123»
+ 1 и более раз \d+ совпадает с «5», «42», «123», но не с «»
? 0 или 1 раз (элемент необязателен) colou?r совпадает с «color» и «colour»
{3} ровно 3 раза \d{3} совпадает с «123», но не с «12»
{2,4} от 2 до 4 раз \d{2,4} совпадает с «12», «123», «1234»

Якоря

Якорь Значение
^ начало текста (в многострочном режиме — и начало каждой строки)
$ конец текста (в многострочном режиме — и конец каждой строки)

Классы символов

Квадратные скобки задают набор символов, любой из которых даёт совпадение:

Класс С чем совпадает
[abc] «a», «b» или «c»
[a-z] любая строчная латинская буква
[A-Za-z] любая латинская буква
[0-9] любая цифра (то же, что \d)
[^abc] любой символ, кроме «a», «b» и «c»

Группы и альтернативы

Синтаксис Значение
(abc) группа захвата — совпадает с «abc» и запоминает найденный фрагмент для замены
(?:abc) группа без захвата — объединяет элементы, но ничего не запоминает
a|b альтернатива — совпадает с «a» или с «b»

Текст замены

В заменяющем тексте можно ссылаться на группы захвата:

Подстановка Что вставляет
$1 первую группу захвата
$2 вторую группу захвата
$& всё совпадение

Параметры

  • Глобально — заменять в ячейке все совпадения, а не только первое. Флажок включён по умолчанию, и обычно его так и оставляют.
  • С учётом регистра — если флажок снят, шаблон hello совпадает и с «Hello», и с «HELLO».
  • Многострочный режим — ^ и $ совпадают с началом и концом каждой строки внутри ячейки, а не только всего значения.

Практические примеры

Удалить лишние пробелы

Заменить одним пробелом любую цепочку пробельных символов (пробелов, табуляций, переводов строки). Пробелы по краям ячейки при этом не исчезают, а тоже сжимаются до одного — как убрать и их, сказано в совете ниже.

Шаблон \s+
Замена (один пробел)
Опции глобально
До " Иван Петров "
После " Иван Петров "

Совет: чтобы убрать и пробелы по краям, добавьте второе правило замены по регулярному выражению с шаблоном ^\s+|\s+$, пустым заменяющим текстом и включённым флажком «Глобально». Или воспользуйтесь формулой trim(v1).

Извлечь числа из текста

Оставить в ячейке, где цифры перемешаны с текстом, только первое число.

Шаблон ^\D*(\d+).*$
Замена $1
Опции глобально
До "Возраст: 42 года"
После "42"

Шаблон охватывает всю ячейку, поэтому после замены в ней остаётся только захваченное число. Простой шаблон (\d+) заменил бы число им же самим, а текст вокруг остался бы на месте. Для чисел с десятичной точкой используйте ^\D*(\d+\.?\d*).*$. Ячейка без цифр остаётся как была.

Привести формат даты к единому виду

Преобразовать «ДД/ММ/ГГГГ» в «ГГГГ-ММ-ДД».

Шаблон (\d{2})/(\d{2})/(\d{4})
Замена $3-$2-$1
Опции глобально
До "15/03/2024"
После "2024-03-15"

Три группы захвата (\d{2}), (\d{2}), (\d{4}) выделяют день, месяц и год, а замена $3-$2-$1 расставляет их в обратном порядке.

Удалить всё после разделителя

Оставить только часть до дефиса. Если разделитель другой (запятая, точка с запятой), подставьте его в шаблон вместо дефиса.

Шаблон \s*-.*$
Замена (пусто)
Опции глобально
До "A1 - примечания"
После "A1"

Очистить метки шкалы Лайкерта

Убрать номер в начале метки вида «1 - Совершенно не согласен», как их выгружает Google Forms.

Шаблон ^\d+\s*[-–]\s*
Замена (пусто)
Опции глобально
До "1 - Совершенно не согласен"
После "Совершенно не согласен"

Заменить несколько вариантов написания сразу

Свести разные написания одного и того же ответа к единому.

Шаблон ^(да|ага|угу|д)$
Замена Да
Опции глобально, без учёта регистра
До "ага", "ДА", "Д"
После "Да", "Да", "Да"

Якоря ^ и $ требуют, чтобы шаблону соответствовала вся ячейка, а не её часть.

Извлечь часть составного кода

Взять нужную часть из структурированного кода вида «ОТД-СОТР-001».

Шаблон ^([^-]+)-([^-]+)-(\d+)$
Замена $2
Опции глобально
До "ОТД-СОТР-001"
После "СОТР"

[^-]+ — любые символы, кроме дефиса: \w здесь не подошёл бы, потому что кириллицу не охватывает. Чтобы извлечь другую часть, замените $2 на $1 или $3.

Когда использовать регулярные выражения, а когда — другие правила

  • Точное сопоставление значений (например, «Мужской» → «М») — используйте перекодирование значений: это проще, и ошибиться труднее.
  • Числовые преобразования — используйте формулу: регулярные выражения работают с текстом, а не с числами.
  • Простой поиск и замена без логики шаблонов — регулярное выражение справится, но перекодирование значений с одной строкой соответствия нагляднее.

Регулярные выражения незаменимы, когда у текста есть структура и сопоставлять её нужно гибко: разные форматы, необязательные части, фрагменты для перестановки.