На этой странице
- Редактор правила
- Основы шаблонов
- Квантификаторы
- Якоря
- Классы символов
- Группы и альтернативы
- Текст замены
- Параметры
- Практические примеры
- Удалить лишние пробелы
- Извлечь числа из текста
- Привести формат даты к единому виду
- Удалить всё после разделителя
- Очистить метки шкалы Лайкерта
- Заменить несколько вариантов написания сразу
- Извлечь часть составного кода
- Когда использовать регулярные выражения, а когда — другие правила
Справочник регулярных выражений
Правило замены по регулярному выражению в преобразовании данных находит в текстовых значениях фрагменты по шаблону и заменяет их. Если вы раньше не работали с регулярными выражениями, начните с этой страницы: здесь собраны основы и самые частые задачи. Подробнее синтаксис разобран в англоязычном интерактивном учебнике 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.
Когда использовать регулярные выражения, а когда — другие правила
- Точное сопоставление значений (например, «Мужской» → «М») — используйте перекодирование значений: это проще, и ошибиться труднее.
- Числовые преобразования — используйте формулу: регулярные выражения работают с текстом, а не с числами.
- Простой поиск и замена без логики шаблонов — регулярное выражение справится, но перекодирование значений с одной строкой соответствия нагляднее.
Регулярные выражения незаменимы, когда у текста есть структура и сопоставлять её нужно гибко: разные форматы, необязательные части, фрагменты для перестановки.