A | B | C | D | E | F | |
---|---|---|---|---|---|---|
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; "....") | (REM | 4 любых символа | ||
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]+)\)") | REMEMBER | 1. латиница | |
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})") | 83333 | 5 первых символов числа | |
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}") | Rory | Ro + еще 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! | Регулярные выражения не работают с числами, только текст |