Функции для работы с регулярными выражениями в Google Таблицах

Эта статья посвящена функциям Google Таблиц, использующие регулярные выражения. Регулярные выражения - специальные шаблоны или маски для поиска текста.

REGEXEXTRACT: извлекаем фрагмент текста из ячейки по шаблону

Итак, пример. Неприятная ситуация: в таблице, из которой вам нужно забрать числовые данные, они занесены как текст с дополнительными символами: "195 EUR", "итого - 220", "оплачено 800 долл" и так далее.
Извлечем числа из текстовых ячеек с помощью REGEXEXCTRACT - функции, извлекающей текст по маске - регулярному выражению.
С помощью регулярных выражений можно составить практически любой текстовый шаблон.

А мы скажем о функции.
Ее синтаксис:
=REGEXEXTRACT(текст;регулярное_выражение)
Текст может быть ссылкой на ячейку или быть собственно текстом в кавычках. Регулярное выражение записывается в кавычках.

В нашем случае текст - это ячейка с данными, а регулярное выражение будет выглядеть так:
[0-9]+
Что означает: любое количество (+) цифр от 0 до 9 ([0-9]), идущих подряд.

Обратите внимание, что функция извлечет числа по такому регулярному выражению. Но они все равно продолжат быть текстом для Google Таблиц.
Их нужно конвертировать в числа с помощью функции ЗНАЧЕН(VALUE).

Смотрим на GIF:
GIF

Примеры других регулярных выражений:

Машин[а-я]{1} - все слова, состоящие из "Машин" и одной любой буквы. То есть Машина, Машины, Машине и т.д.
Долл|Руб - только текст "Долл" или "Руб".
Яндекс[а-я]{0,1} - Слово "Яндекс", а также слово "Яндекс" с любой буквой в конце, например, Яндекса, Яндексу и т.д.

REGEXMATCH: проверяем наличие в ячейке текста, отвечающего заданному шаблону

REGEXMATCH проверяет, содержится ли в ячейке текст, соответствующий регулярному выражению.
Возвращает эта функция логическое значение - ИСТИНА или ЛОЖЬ - в зависимости от того, найден ли в ячейке подходящий текст.

Обратите внимание, что проверяется наличие текста, отвечающего шаблону, а не полное соответствие всего текста, что есть в ячейке.
То есть для всех следующих значений текста в ячейке функция REGEXMATCH(ячейка; "Москва") вернет ИСТИНА:
Москва
Москва, ул. Ленина, 1
125125 Москва, 3-я улица Строителей, 25

В примере проверим:

1. Есть ли в ячейках номера банковских карт (вида 1234 5678 9012 3456). Регулярное выражение - "\d{4} \d{4} \d{4} \d{4}", где \d = цифра, {4} - кол-во идущих подряд цифр.

2. Есть ли в ячейках несколько строчных кириллических букв ("[а-я]+") или латинских ("[a-z]+").

Смотрим на GIF:
GIF

REGEXREPLACE. Находим и заменяем текст в ячейке, соответствующий регулярному выражению

Рассмотрим третью функцию Google Таблиц для работы с регулярными выражениями.
Это REGEXREPLACE, позволяющая заменить отдельные фрагменты, соответствующие регулярному выражению, на заданный текст.

Синтаксис:
=REGEXREPLACE (текст, в котором ведем поиск; рег.выражение - что заменяем в тексте ; текст, на который заменяем)

Например, функция:
=REGEXREPLACE(A1;"машин[а-я]{1}";"автомобиль")
Заменит в тексте из ячейки A1 все слова "машина", "машину" и другие ("машин" + любая буква) на "автомобиль".

Смотрим на GIF:
GIF

Рубрики:
Комментарии
2 Цепочка комментария
0 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
2 Авторы комментариев
Костя

круто! спасибо за статью

InExSu

Привет!
Как сделать, чтобы REGEXEXTRACT извлекал в одну ячейку?

Темы, на которые я пишу: