Регулярные выражения в Гугл-таблицах
Как очистить данные и достать нужную информацию даже из самых «грязных» ячеек без программирования
В Excel есть базовые функции для работы с текстом — например, СЧЁТЕСЛИ посчитает количество ячеек, в которых есть определенное слово; ЛЕВСИМВ выделит несколько символов в начале строки. Но эти функции вряд ли помогут, если текст сильно отличается — например, в искомых ячейках нет общего корня, или количество символов везде разное. Зато такие задачи можно решить при помощи регулярных выражений, и в «Гугл-таблицах» есть функции, которые с ними работают.
Обычно функции Excel и «Гугл-таблиц» идентичны, но не в этот раз: материал из этого урока вы сможете использовать только в «таблицах».
Что такое регулярные выражения?
Это шаблоны, которые позволяют нам искать составленный по ним текст. Например, почтовый адрес состоит из латинских букв и цифр, символа @, ещё букв или цифр, точки, и, как правило, двух-трёх букв. С помощью регулярного выражения мы можем записать это так:
[A-z0-9]+@[A-z0-9]+\.[A-z]{2,3}
В этой записи есть два вида символов. Одни указывают на то, какие символы могут встречаться в тексте, а другие — сколько раз эти символы могут повторяться.
Для демонстрации принципов работы регулярных выражений мы будем использовать сайт regex101.com. Интерфейс сайта прост: в верхнем поле для ввода нужно написать регулярное выражение, а в нижнем — текст, для которого вы будете это выражение применять.
Фрагменты текста, соответствующие регулярному выражению, подсвечиваются, а в строке, где написано REGULAR EXPRESSION, будет написано, сколько таких совпадений есть в тексте.
Как обозначать символы
Разберем основы регулярных выражений на примере разных форм слова «яблоко». Например, таких:
яблоко
яблоки
яблоками
яблока
яблок
Самый простой случай — это когда мы в качестве регулярного выражения используем сам текст, который хотим найти. Например, регулярное выражение «яблоко» найдёт текст «яблоко».
Если мы хотим указать, что на определенном месте может встретиться один из символов, то мы должны использовать квадратные скобки.
Регулярное выражение «яблок[ои]» найдёт как слово яблоко, так и слово яблоки. Символы, из которых мы будем выбирать, пишутся в скобках друг за другом без пробелов. Если на определённом месте могут стоять буквы а, я или ю, то мы запишем: [аяю]
В скобках можно указывать диапазон символов — это удобно для алфавитов. Например, все русские буквы, кроме ё — это [А-я]. Маленькие буквы — [а-я], большие — [А-Я].
С буквой ё есть проблемы, потому что ее код в кодировке стоит особняком от остальных русских букв. Если вы хотите захватить и букву ё, надо написать такое выражение: [А-яЁё]. Соответственно, все латинские буквы — это [A-z], все цифры — [0-9].
Если вам нужен любой символ кроме тех, которые указаны в скобках, то первым символом в скобках должен быть ^. Например, выражение яблок[^о] не будет искать слово яблоко.
Также есть специальные символы, которые обозначают сразу какую-то группу символов. Точка — это вообще любой символ, \d — это цифра, \s — это любой пробельный символ.
Как обозначать количество повторений
Теперь рассмотрим, как в регулярных выражениях обозначать количество повторений.
Знак вопроса после символа говорит нам о том, что символ может встретиться или не встретиться в регулярном выражении (1 или 0 раз). Плюс — что он встречается хотя бы раз. Звёздочка — символ может встретиться любое количество раз или не встретиться вовсе.