ABCDEF
1
Строка поискаЗадачаРезультатФормулаРегулярное выражениеКомментарий
2
КЕЙСЫ ПАВЕЛ МРЫКИН
3
Строка поискаЗадачаРезультатФормулаРегулярное выражениеКомментарий
4
ёлка-лка=REGEXEXTRACT(A4;"[а-я]+")[а-я]+Буква ё была проигнорирована, поэтому был извлечён последующий текст
5
метЁлка-мет=REGEXEXTRACT(A5;"[а-я]+")[а-я]+Т.к. буква ё находится в середине слова, то регулярка разрезает его на части.
6
ёлка-ёлка=REGEXEXTRACT(A6;"[а-яё]+")[а-яё]+Добавление буквы ё - решает вопрос
7
Ежовые рукавицы-жовые=REGEXEXTRACT(A7;"[а-яё]+")[а-яё]+-//-
8
ежовые_рукавицы-ежовые=REGEXEXTRACT(A8;"[а-яё]+")[а-яё]+Т.к. поиск осуществляется только по буквам - в результате только слово ежёвые
9
Ёлка-Ёлка=REGEXEXTRACT(A9;"(?i)[а-яё]+")(?i)[а-яё]+Благодаря добавлению (?i) поиск становится регистро-независимым
10
black-#N/A=REGEXEXTRACT(A10;"(?i)[а-яё]+")(?i)[а-яё]+Т.к. мы указали диапазон из русских букв, то для латиницы получаем ошибку
11
Ёлка-Ёлка=REGEXEXTRACT(A11;"\S+")\S+\S+ Является альтернативным решением, поиск осуществляется по всем непробельным символам (соответствует выражению [^ \t\n\r\f])
12
ежовые рукавицы-ежовые=REGEXEXTRACT(A12;"\S+")\S+Когда встречается пробел - поиск заканчивается
13
ежовые_.-,?/рукавицы-ежовые_.-,?/рукавицы=REGEXEXTRACT(A13;"\S+")\S+Знаки пунктуации также соответствуют регулярному выражению
14
black-black=REGEXEXTRACT(A14;"\S+")\S+То же самое относится и к латинице
15
=REGEXEXTRACT(A15; ".*").*
16
VISA0000 20:53 Покупка 768.66р MAGNIT Баланс: 16000.18р-768,66=VALUE( REGEXREPLACE( REGEXEXTRACT(A16; "([0-9]+|[0-9]+.[0-9]+)р"); "\.";","))"([0-9]+|[0-9]+.[0-9]+)р"Вытащить сумму из текста REGEXEXTRACT
+ замена "." на ","
+ превратить его в число (VALUE)
17
17.12.2019 SBOL перевод 4276****0505 П. МАРИЯ +1 019,00 38 781,78
ВЛАДИМИРОВНА
17.12.2019 / 208492 Прочие операции
-1019=ЗНАЧЕН(REGEXEXTRACT(REGEXREPLACE(A17;" ";"");"\d+,\d\d"))"\d+,\d\d"Вариация №2
18
"17.12.2019 SBOL перевод 4276****4940 М. ГУЗЕЛЬ 570,00 36 830,78
РУСТЯМОВНА
17.12.2019 / 265809 Прочие операции"
-570=ЗНАЧЕН(REGEXREPLACE(REGEXEXTRACT(A18;"\d+ \d+,\d\d|\d+,\d+");" ";""))"\d+ \d+,\d\d|\d+,\d+"Вариация №3
19
utm_campaign=shop_msk_phone_model10|12312414-12312414=REGEXEXTRACT(A19;"utm_campaign.*?(\d{5,})")utm_campaign.*?(\d{5,})Число из текста, которое больше или равно 5 символам. При этом в тексте могут быть другие числа

там помимо фигурных скобок важна также взаимосвязь операторов .*?
если убрать оттуда ? то .* захватит максимально возможное число и оставит \d{5,} указанное количество - т.е. 5
а нам нужно от 5 и более, поэтому необходимо ограничить его "жадность" )
20
utm_campaign=shop_msk_phone_model10|12312415-12312414=REGEXEXTRACT("utm_campaign=shop_msk_phone_model10|12312414";"utm_campaign.*?(\d{5,})")utm_campaign.*?(\d{5,})Число из текста, которое больше или равно 5 символам. При этом в тексте могут быть другие числа
(с текстом)
21
Текст до скобки (блаблабла)-Текст до скобки =REGEXEXTRACT(A21;"(.*) ?\(")(.*) ?\(Вытащить текст строки ДО скобки
22
[18:43:14] 2019-09-02-18:43=ТЕКСТ(regexreplace(ИНДЕКС(SPLIT(A4," "),1,1),"\[|\]",""),"HH:MM")\[|\]Преобразовать отдельно в время 18:43
23
[18:43:14] 2019-09-02-02.09.2019=ТЕКСТ(ИНДЕКС(SPLIT(A4," "),1,2),"dd.mm.yyyy")Преобразовать отдельно в дату 02.09.2019
24
20124322055-55=REGEXEXTRACT(A22;"(?:........0|........)(\d+)$")(?:........0|........)(\d+)$"Очень полезно, когда нужно "перебрать" варианты, что может стоять до или после искомого значения, но нет необходимости его выводить.

Для этого в начале группы () ставится значение ?:

В данном конкретном случае происходит проверка, что в начале должно быть 8 любых чисел, а девятым 0.
Если условие не выполняется, то просто проверяем, что в начале находится 8 чисел.
Вторая же группа забирает то, что остаётся.
25
20124322055-55=REGEXEXTRACT(A23;"(?:\d{8}0|\d{8})(\d+)$")(?:\d{8}0|\d{8})(\d+)$Аналогично выше. Второй способ.
Вместо \d можно использовать точки, но так нагляднее.
Это как раз повторение в данном случае
26
27
КЕЙСЫ АВАЗБЕК
28
Строка поискаЗадачаФормулаРегулярное выражениеРезультатКомментарий
29
Вася передал Пете 100р за компотВыделить сумму "100"=ЕСЛИОШИБКА(ЗНАЧЕН(REGEXEXTRACT(A18;"[0-9].+[0-9]"));ЗНАЧЕН(REGEXREPLACE(REGEXEXTRACT(A18;"[0-9].+[0-9]");"\.";",")))[0-9].+[0-9]100Выделить сумму (в примере 100). Сумма может быть целой или с копейками.
Признаком будет то, что "р" всегда идет сразу после числа, без пробелов и т.д. никаких точек после "р" или "руб." не бывает
30
Вася передал Пете 100.14р за компотВыделить сумму "100,14"=ЕСЛИОШИБКА(ЗНАЧЕН(REGEXEXTRACT(A19;"[0-9].+[0-9]"));ЗНАЧЕН(REGEXREPLACE(REGEXEXTRACT(A19;"[0-9].+[0-9]");"\.";",")))[0-9].+[0-9]");"\.100,14Выделить сумму (в примере 100,14). Сумма может быть целой или с копейками.
Признаком будет то, что "р" всегда идет сразу после числа, без пробелов и т.д. никаких точек после "р" или "руб." не бывает
31
По ведомости N0560 Вася передал Пете 100.14р за компотВыделить сумму "100,14"=REGEXEXTRACT(A20; "[0-9]+\.*[0-9]*р")[0-9]+\.*[0-9]*р100.14рточка может быть, а может не быть. Но всегда есть "р".
Я об этом сразу написал, что может быть 100р, а может 100.25р
Единственное что точно - никогда после суммы нет пробелов. И "р" всегда есть. Ни "руб" ни что другое
32
По ведомости N0560 Вася передал Пете 100.14р за компотВыделить сумму "100,14" (FILTER)=FILTER( ТРАНСП( SPLIT(A21;" ")); REGEXMATCH( ТРАНСП( SPLIT(A21; " ")); "\."))100.14рЧЕРЕЗ ФУНКЦИЮ FILTER/SPLIT/REGEXMATCH
33
По ведомости N0560 Вася передал Пете 100.14р за компотВыделить сумму "100,14"=ЕСЛИОШИБКА(ЗНАЧЕН(REGEXREPLACE(REGEXREPLACE(REGEXEXTRACT(A22;"[0-9]+[.|,]*[0-9]*р\ ");"р";"");"\.";","));"")[0-9]+[.|,]*[0-9]*р\ 100,14Разумеется с "р". Дальше заменой обернул и по поводу "." и по поводу "р" и норм.
чтобы и для "." и для "," работало одинаково. И для целых чисел (без дроби тоже)
34
35
36
РАЗНЫЕ КЕЙСЫ
37
Строка поискаЗадачаФормулаРегулярное выражениеРезультатКомментарий
38
2410*3706020 эбр 098Заменить все НЕ-цифры из строки на пустые ""=REGEXREPLACE(A7; "\D+";"")\D+24103706020098Заменяет все не числовые значения на пустоту.
Также работает с ARRAYFORMULA.
d для чисел
D не для чисел
39
vitaliku@mail.ruВытащить логин почты=ЛЕВСИМВ(A35;ПОИСК("@";A35)-1)vitalikuВариант формулой
40
Строка поиска: Дополнительные услуги (набор текста "Content text 123 in english" для заказчика)Извлечь текст между кавычками=REGEXEXTRACT(A40;"\"&Char(34)&"([A-Za-z0-9].+?)"&"\"&CHAR(34))"\"&Char(34)&"([A-Za-z0-9].+?)"&"\"&CHAR(34))Content text 123 in englishВытаскиваем текст в рамках кавычек " Content text 123 in english "
41
Строка поиска: Дополнительные услуги (набор текста "Content text 123 in english" для заказчика)Извлечь текст между кавычками=REGEXEXTRACT(A41;"\""(.*?)\""")"\""(.*?)\"""Content text 123 in englishВытаскиваем текст в рамках кавычек " Content text 123 in english "
42
California Gold Nutrition, Alpha Lipoic Acid, 600 mg, 120 Veggie CapsulesВытащить ВТОРОЕ число=REGEXEXTRACT(A41;"\d+[^\d]+(\d+)")"\d+[^\d]+(\d+)"120
43
44
КЕЙСЫ МАКС МАХРОВ
45
ЗадачаКусок текстаФормулаРезультатОписание
46
Извлечь первое число из текста(REMEMBER) --101, 12, 15.11, 1.5=REGEXEXTRACT(B46 ; "[0-9]")1Получить один символ 0
47
(REMEMBER) --101, 12, 15.11, 1.5=REGEXEXTRACT(B47 ; "01")01
Получить 2 символа: 0, за ним 1
48
(REMEMBER) --101, 12, 15.11, 1.5=REGEXEXTRACT(B48 ; "[01]")1
Получить 1 символ, первый встречный 0 или 1
49
(REMEMBER) --101, 12, 15.11, 1.5=REGEXEXTRACT(B49 ; "[01]+")101
Получить несколько символов, идущих подряд, где есть 0, 1
50
(REMEMBER) --500, 12, 15.11, 1.5=REGEXEXTRACT(B50 ; "[0-9]+")500
Извлекает первое число, подряд идущие символы от 0 до 9
51
Извлечь первое число с разрядностью 2(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B51;"[0-9]*5")155
число заканчивается на 5. * означает взять больше символов
52
(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B52; ".")(
любой символ. Точка (.) -- означает любой символ
53
(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B53; "\.").
Точка. Чтобы получить точку, ее нужно экранировать косой (\)
54
(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B54; "....")(REM4 любых символа
55
(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B55; ".{4}")(REM
4 любых символа. Количество их в фигурных скобках {}
56
(REMEMBER) -- 101, 12, 155.11, 1.5=REGEXEXTRACT(B56; "[0-9]+\.")155.
Цифры, за которыми следует точка
57
(REMEMBER) -- 101, 12, 155.115, 1.5=REGEXEXTRACT(B57;"[0-9]+\.[0-9]+")155.115
Разделитель = точка. Любое количество цифр после запятой
58
(REMEMBER) -- 101, 12, 155.115, 1.5=REGEXEXTRACT(B58;"[0-9]+\.[0-9]{2}")155.11
Разделитель = точка. Количество цифр после запятой = 2
59
(ПОМНИ) -- 101; 12; 155,115555=REGEXEXTRACT(B59;"[0-9]*,[0-9]+[0-9]+")155,115555Разделитель = запятая
60
Получить слово в круглых скобках (без скобок)ALL (REMEMBER) -- 101, 12, 15.11, 1.5=REGEXEXTRACT(B60; "\(([A-Za-z]+)\)")REMEMBER1. латиница
61
(ПОМНИ) -- 101, 12, 15.11, 1.6=REGEXEXTRACT(B61; "\(([А-Яа-я]+)\)")ПОМНИ2. кирилица
62
Извлечь имя файла из путиC:\Windows\addins\FXSEXT.ecf=REGEXEXTRACT(B62; ".*\\")C:\Windows\addins\
Любое количество любых знаков, в конце косая \
63
C:\Windows\addins\FXSEXT.ecf=SUBSTITUTE(B63;REGEXEXTRACT(B63; ".*\\");"")FXSEXT.ecf
Исключить все, кроме имени файла
64
Получить последнее словоКакой хороший день=REGEXEXTRACT(B64; "([^ ]*$)")день
(любые символы, кроме пробела в конце строки)
65
Извлечь имя файла из пути, способ 2Какой хороший день=REGEXEXTRACT(B65; ".")КЛюбой символ
66
Какой хороший день=REGEXEXTRACT(B66; ".*")Какой хороший деньВся фраза
67
C:\Windows\addins\FXSEXT.ecf=REGEXEXTRACT(B67; "([^\\]*$)")FXSEXT.ecf
Символы, не содержащие слеша в конце строки
68
Извлечь всё числочисло 833335=REGEXEXTRACT(B68; "\d+")833335
69
Извлечь перрвые N символов числачисло 833336=REGEXEXTRACT(B69; "([0-9]{5})")833335 первых символов числа
70
Извлечь повторения только одного любого символачисло 833337=REGEXEXTRACT(B70; "3+")3333
Должно выдавать 3333, потому что оно повторяется
71
числоооооо 833338=REGEXEXTRACT(B71; "о+")оооооо
Должно выдавать оооо..., потому что оно повторяется
72
a word 555555=REGEXEXTRACT(B72; "\w")aлатиница + числа.
73
a word 555555=REGEXEXTRACT(B73; "\s") пробел
74
Последние и первые в спискечисло 833335 116=REGEXEXTRACT(B74; "(\d)+")5В первом числе
75
число 833335 116=REGEXEXTRACT(B75; "(\d)$")6В последнем числе
76
число 833335 116=REGEXEXTRACT(B76; "(\d+)$")116Последнее число
77
число 833335 116=REGEXEXTRACT(B77; "(\d)")8
78
Текст после переноса строкиПервая строка
Вторая строка
=REGEXEXTRACT(B78; "\n.*")
Вторая строка
знак переноса строки
79
мар 2015=REGEXEXTRACT(B79; "мар.?")мар
берет "март", если не найдено -- "мар"
80
март 2015=REGEXEXTRACT(B80; "мар.?")март
берет "март", если не найдено -- "мар"
81
Найти имейл с кирилицейexample@mail.com=IFERROR(REGEXEXTRACT(B81; "[А-Яа-я]");"нет кириллицы")нет кириллицынет кириллицы
82
example@mail.сom=IFERROR(REGEXEXTRACT(B82; "[А-Яа-я]");"нет кириллицы")сесть!
83
examplе@mail.com=IFERROR(REGEXEXTRACT(B83; "[А-Яа-я]");"нет кириллицы")еесть!
84
Получить N-ый по счету символололо 555556499=REGEXEXTRACT(TEXT(B84;0); "(\d){7}")4брать седьмую цифру
85
ололо 555556500=REGEXEXTRACT(TEXT(B85;0); "(.){7}")5
любой символ, 7-ой по счету
86
Rory=REGEXEXTRACT(B86;"Ro.{2}")RoryRo + еще 2 символа
87
Получить составное слово / фразуSetValue=REGEXEXTRACT(TEXT(B87;0); "Set(?:Value)?")SetValueСоставная фраза
88
Set=REGEXEXTRACT(TEXT(B88;0); "Set(?:Value)?")SetОтдельное слово
89
Set Value=REGEXEXTRACT(TEXT(B89;0); "Set(?:Value)?")Set
Предпочтение дается первому слову
90
Set Value=REGEXEXTRACT(TEXT(B90;0); "(?:Set)?Value")Value
Предпочтение дается второму слову
91
Получить только значения внутри тега<a>Добрый день!</a>=REGEXEXTRACT(B91;"<.*>(.+[^<>])</.*>")Добрый день!Простой тег
92
<B><I>bold italic</I></B>=REGEXEXTRACT(B92;"<.*>(.+[^<>])</.*>")bold italicсоставной тег
93
Определить имейлmy email is dxfxcb@mail.com=REGEXEXTRACT(B93;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}")dxfxcb@mail.comНайти имейл в тексте
94
examplе@mail.com=REGEXEXTRACT(B94;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}")#N/A
не найден имейл т.к. имеется кириллица!
95
Слово, не заканчивающееся на определенный символBabo bibos rabios vabos vas=REGEXEXTRACT(B95;"\b\w+[^s] \b|\w+[^s]$")Babo В начале
96
Babos bibos rabios vabo vas=REGEXEXTRACT(B96;"\b\w+[^s] \b|\w+[^s]$")vabo В середине
97
Babos bibos rabios vabos va=REGEXEXTRACT(B97;"\b\w+[^s] \b|\w+[^s]$")vaВ конце
98
Сделать поиск нечувствительным к региструsetvalue SetValue=REGEXEXTRACT(B98;"(?i)SetValue")setvalue
99
Слово, состоящее из 6-ти символовBabos bibos rabios vabo vas=REGEXEXTRACT(B99;"\b\w{6}\b")rabios
100
Получить число из любой переменной13924=REGEXEXTRACT(B101 ; "[0-9]+")#VALUE!
Регулярные выражения не работают с числами, только текст