Регулярные выражения поддерживаются разными языками программирования (например, JavaScript, Java, Perl, PHP) и разными инструментальными средствами (например, Word или Google Таблицы). К сожалению, в Excel нет встроенных функций для работы с «регулярками», но можно создать пользовательскую функцию на VBA. А вот в Google Таблицах такие функции есть «из коробки». Их три (названия у этих функций только на английском):
• REGEXMATCH для проверки текста на соответствие регулярному выражению (возвращает ИСТИНА / TRUE или ЛОЖЬ / FALSE);
• REGEXREPLACE для замены части текста, соответствующей регулярному выражению, на другой текст;
• REGEXEXTRACT для извлечения фрагмента текста, который соответствует регулярному выражению.
Кроме того, в Google Таблицах можно фильтровать данные с условием, заданным в виде регулярного выражения, с помощью функции QUERY.
Давайте рассмотрим основные элементы, из которых собираются шаблоны — регулярные выражения.
Здесь в примерах мы будем обозначать полужирным
регулярные выражения, аПросто текст без всяких знаков
— это вполне себе регулярное выражение, хоть и очень простое.Лемур
Это совпадение с конкретным словом «Лемур» в тексте — именно в таком регистре (регулярные выражения чувствительны к регистру).
_____________________
. (точка) —
любой символ. Например, «Ро. линг» — две конкретные буквы, далее любой символ, далее еще четыре конкретных буквы. Такое регулярное выражение будет соответствовать и фамилии «Роулинг», и другим вариантам написания с ошибкой (например, «Ровлинг»), и вообще любому варианту написания, где на третьей позиции будет любой символ.Ро. линг
«Роуллинг» нашему регулярному выражению не соответствует — на месте точки может быть только один символ.
Если вам нужно явным образом указать непосредственно символ точки в регулярном выражении, используйте обратную косую черту: \.
_____________________
[символы]
— символы в квадратных скобках — это набор из нескольких символов, которые могут быть на соответствующей позиции в текстовой строке.Например:
Ле[мд]ур
— это один из вариантов «Лемур» или «Ледур», но не что-то иное.Можно использовать дефис, чтобы обозначать диапазоны символов. Например, [0–6]
и [0123456] идентичны.[^символы]
— если перед набором символов добавить «крышечку» (^), то это будет отрицанием, то есть любым символом, кроме перечисленных в квадратных скобках._____________________
\d — любая цифра.
Идентично выражению [0–9].Регистр здесь имеет значение. \D
— это уже любой символ, кроме цифры._____________________
\w —
любая латинская буква в любом регистре, любая цифра или нижнее подчеркивание.\W
— любой символ, кроме перечисленных (то есть «не \w», не латинская буква, не цифра и не подчеркивание)._____________________
\s —
любой пробельный символ (непечатаемые символы: пробел, перевод строки, табуляция и другие).\S
— соответственно, любой не пробельный символ._____________________
| (
вертикальная черта) — один из вариантов, «или — или». Например:USD|EUR
_____________________
? (знак вопроса)
— ничего или один указанный символ.Например:
Ле\s?Мур
Такому выражению будут соответствовать и варианты с одним переносом строки, и с одним пробелом «Ле Мур», и слитное написание «ЛеМур». Варианты с несколькими пробелами не подойдут.
Слитное написание «Лемур» не будет соответствовать такому выражению — из-за регистра. Чтобы учесть варианты и «ЛеМур», и «Лемур», можно указать обе буквы в квадратных скобках, напомним: это означает один символ из набора.
_____________________
+ (плюс) —
одно или несколько повторений символа.Например, \s + —
один или более пробелов.Ле\s + Мур
— будет соответствовать вариантам «_____________________