Регулярний вираз описує, який текст потрібно знайти. Замість однієї точної фрази ви задаєте шаблон: наприклад, слово «Заявка» й будь-який номер після нього. Номер може змінюватися в кожному повідомленні, а шаблон однаково знайде потрібний фрагмент.
Так можна шукати дати, посилання, окремі слова, цілі рядки й майже будь-які поєднання тексту, які можна описати правилом. Кілька простих символів дають змогу враховувати змінні значення, вибирати з різних варіантів і пропускати непотрібне. Можливості такого пошуку значно ширші за звичайний пошук за словом.

Можливості регулярних виразів
Підтримка регулярних виразів у фільтрах і замінах FLOWIN дає змогу:
- Додавати на початку або в кінці повідомлень будь-який текст.
- Фільтрувати повідомлення з посиланнями.
- Видаляти посилання, телефони, пошту та іншу контактну інформацію з повідомлень, що копіюються.
- Фільтрувати довгі повідомлення або, навпаки, лише короткі.

Як читати регулярний вираз
Почнемо із шаблону Заявка №\d+. Він знаходить і Заявка №125, і Заявка №8072, хоча номери різні. Прочитаймо його зліва направо:
Заявка №шукає саме ці літери, пробіл і знак номера.\dпозначає будь-яку цифру від 0 до 9.+вимагає одну або кілька таких цифр поспіль.
Знайдений фрагмент називають збігом. У повідомленні Заявка №125 прийнята збігом буде Заявка №125, а слово прийнята залишиться за його межами. У фільтрі збіг допомагає визначити, чи відповідає повідомлення умові; у заміні він указує, який фрагмент змінити.
Звичайні літери й пробіли в шаблоні шукаються так, як написані. Спеціальні символи задають правила. Нижче розібрано основні позначення, а потім зібрано готові приклади для різних завдань.
Синтаксис регулярних виразів
Щоб почати використовувати регулярні вирази, потрібно знати синтаксис, тобто розуміти, що позначають певні символи.
Основні символи
^позначає початок тексту.$позначає кінець тексту..відповідає будь-якому символу, зокрема перенесенню рядка.\dвідповідає цифрі від 0 до 9.\wвідповідає латинській літері, цифрі або знаку підкреслення.\nпозначає перенесення рядка.\tпозначає табуляцію.\sвідповідає звичайному пробілу, табуляції, перенесенню рядка, поверненню каретки або переведенню сторінки.\bперевіряє межу слова, наприклад між літерою та пробілом. Самого символу до збігу не додає.
Кількісні символи
Кількісні символи вказують, скільки разів повторюється символ або група перед ними. Група об’єднує кілька символів у круглих дужках.
*означає 0 і більше разів.+означає 1 і більше разів.?означає 0 або 1 раз.{5}означає рівно 5 разів.{1,5}означає від 1 до 5 разів.{1,}означає 1 і більше разів.{0,5}означає від 0 до 5 разів.
Наприклад:
a+відповідаєa,aa,aaaі так далі..*відповідає будь-якому тексту, навіть порожньому.аб{3}відповідаєаббб.
Групи
Круглі дужки ( ) об’єднують символи в групу. Групи найчастіше використовують із кількісними символами або з вертикальною рискою |, яка позначає логічне АБО.
Наприклад:
((Bob)|(Alice))відповідає якBob, так іAlice.(abc){3}відповідаєabcabcabc.
Набір символів
Для позначення набору символів використовуються квадратні дужки [ ]. Усередині них символи можна перелічити так:
[а-яё]відповідає будь-якій літері російського алфавіту.[абвгд]або[а-д]відповідає одній із літера,б,в,габод.[a-z]відповідає будь-якій латинській літері відaдоz.[0-5]відповідає будь-якій цифрі від 0 до 5.
Символ ^ на початку набору позначає логічне НЕ:
[^а-яё]відповідає будь-якому символу, крім літери російського алфавіту.[^a-z]відповідає будь-якому символу, крім латинської літери відaдоz.[^\s]відповідає будь-якому символу, який не входить до\s.
У FLOWIN \w не охоплює кирилицю. [а-яё] охоплює російський алфавіт, зокрема ё. До діапазону [а-я] ця літера не входить.
Екранування символів
Якщо службовий символ потрібен як звичайний текст, а не як частина синтаксису, перед ним ставиться зворотна скісна риска \. Це називається екрануванням.
Наприклад:
:\)відповідає:). Дужка тут позначає звичайну дужку, а не групу.хто\?відповідаєхто?. Знак питання тут не задає кількості повторень.
Налаштування пошуку у FLOWIN
Прапорці змінюють загальні правила пошуку: наприклад, чи потрібно розрізняти великі й малі літери. У FLOWIN частину налаштувань уже ввімкнено, тому той самий шаблон може поводитися інакше, ніж у сторонньому тестері з налаштуваннями за замовчуванням.
Прапорці вже налаштовані
У фільтрах і замінах увімкнено IgnoreCase (i), Singleline (s), RE2 і Unicode. Додавати їх вручну до кожного шаблону не потрібно. Ось що важливо на практиці:
iвимикає розрізнення регістру:кітзнайде іКіт, іКІТ.sдозволяє крапці.знаходити перенесення рядка. Тому.*може охопити кілька рядків одразу.- Багаторядковий режим
Multiline (m)за замовчуванням вимкнено:^і$стосуються початку й кінця всього повідомлення, а не кожного рядка. RE2задає особливості синтаксису:\dшукає цифри 0–9, а\wлише латинські літери, цифри й підкреслення. УвімкненийUnicodeне додає кирилицю до\w.
Для готових прикладів нижче нічого перемикати не потрібно. Якщо перевіряєте їх в іншому сервісі, зважайте на ці налаштування: збіг назв прапорців ще не гарантує однакової поведінки різних рушіїв.
Готові шаблони
Виберіть завдання й скопіюйте шаблон у поле «Шукати» з режимом «Regexp». У прикладах показано саме знайдений текст. Що потім станеться з повідомленням, залежить від налаштованого фільтра або заміни.
Номер заявки, який щоразу змінюється
Знайти заявку, не знаючи її номера заздалегідь.
Шаблон:Заявка №\d+
Текст: Заявка №125 прийнята. Заявка №8072 очікує на відповідь.
Знайде: Заявка №125, Заявка №8072.
Текст «Заявка №» залишається сталим, а \d+ знаходить одну або кілька цифр поспіль. Пробіл перед № теж входить до шаблону. «Заявка №ABC» не підійде.
Повідомлення лише із шести цифр
Відібрати повідомлення, у яких міститься рівно шестизначний код.
Шаблон:^\d{6}$
Текст: 482901
Знайде: 482901.
Початок і кінець обмежують усе повідомлення, а {6} задає шість цифр. «Код: 482901», «48290» і «482901 » із пробілом у кінці не підійдуть.
Один із кількох варіантів тексту
Знайти повідомлення зі згадкою одного з двох статусів.
Шаблон:готово|скасовано
Текст: Готово: файл надіслано. Інше завдання скасовано.
Знайде: Готово, скасовано.
Вертикальна риска означає «або». Регістр літер не важливий. Без меж слова шаблон знайде «готово» й усередині слова «готового».
Слово цілком, без збігів усередині інших слів
Знайти слово «кіт», пропускаючи «кітель» і «скіт».
Шаблон:\bкіт\b
Текст: Кіт, кітель і скіт.
Знайде: Кіт.
\b з обох боків перевіряє межі слова. Пробіли й пунктуація можуть відокремлювати слово від сусіднього тексту; самі вони до збігу не входять.
Дата у форматі день.місяць.рік
Знайти дату, у якій день і місяць записано двома цифрами, а рік чотирма.
Шаблон:\d{2}\.\d{2}\.\d{4}
Текст: Зустріч 16.10.2026 о 12:00.
Знайде: 16.10.2026.
\. позначає звичайну крапку, а не будь-який символ. Шаблон перевіряє форму запису, але не календар: «99.99.2026» теж дасть збіг.
Хештеги російською та англійською
Знайти хештеги з літер, цифр і знаків підкреслення.
Шаблон:#[а-яёa-z0-9_]+
Текст: #Новости #release_2 #всё_готово
Знайде: #Новости, #release_2, #всё_готово.
Після # іде один або кілька символів із набору. Пробіл або дефіс завершить збіг: у «#план-дня» буде знайдено лише «#план».
Згадки виду @username
Знайти текст, схожий на згадку користувача або каналу.
Шаблон:@[a-z0-9_]{3,}
Текст: Автор: @news_room. Ще один: @ab.
Знайде: @news_room.
Після @ потрібні щонайменше три латинські літери, цифри або знаки підкреслення. Шаблон шукає форму запису, а не перевіряє існування користувача. Він також може знайти частину адреси електронної пошти.
Посилання з http:// або https://
Знайти явно записану вебадресу з протоколом.
Шаблон:https?:\/\/[^\s]+
Текст: Відкрийте https://example.org/page і http://example.org
Знайде: https://example.org/page, http://example.org.
Літера s необов’язкова. Після // шаблон забирає символи до найближчого пробілу або іншого роздільника з \s. Адреса без протоколу не підійде, а кома або крапка впритул до адреси можуть потрапити до збігу.
Телефон у записі +7 і десять цифр
Знайти номер, записаний суцільно, без дужок, пробілів і дефісів.
Шаблон:\+7\d{10}
Текст: Контакт: +79991234567
Знайде: +79991234567.
\+ шукає звичайний плюс, а \d{10} задає рівно десять цифр після 7. Варіант «+7 (999) 123-45-67» не дасть збігу. Це пошук за формою запису, а не перевірка існування номера; усередині довшої послідовності цифр теж можливий збіг.
Повідомлення, які починаються з потрібної позначки
Знайти позначку «Важливо:» лише на самому початку повідомлення.
Шаблон:^Важливо:
Текст: ВАЖЛИВО: зустріч перенесена.
Знайде: ВАЖЛИВО:.
^ перевіряє початок усього тексту. В «Оновлення: Важливо: зустріч перенесено» збігу не буде. Позначка на початку другого рядка теж не підійде, оскільки багаторядковий режим за замовчуванням вимкнено.
Зайві пробіли між словами
Знайти два або більше звичайних пробілів поспіль, щоб потім замінити їх одним.
Шаблон:[ ]{2,}
У тексті Текст··із···пробілами буде знайдено дві групи: два й три пробіли. Знак · тут лише показує звичайний пробіл; вводити його не потрібно.
Усередині квадратних дужок стоїть звичайний пробіл, а {2,} вимагає щонайменше два поспіль. Щоб прибрати зайві пробіли, знайдені фрагменти замінюють одним пробілом. Перенесень рядків такий шаблон не зачіпає.
Короткі повідомлення до ста символів
Відібрати непорожні повідомлення завдовжки від 1 до 100 символів.
Шаблон:^.{1,100}$
Текст: Коротке повідомлення
Знайде: Коротке повідомлення.
Крапка рахує будь-які символи, зокрема пробіли й перенесення рядків. Дужки задають межі, а ^ і $ вимагають перевірити повідомлення цілком. Порожнє повідомлення й текст довший за 100 символів не підійдуть. Складений емодзі може рахуватися як кілька символів.
Список поповнюватиметься. Пропозиції нових шаблонів можна надіслати в підтримку @value_maker.
Перевірка свого шаблону
На regex101.com зручно перевіряти власні регулярні вирази. Налаштування пошуку там можуть відрізнятися від FLOWIN, тому перед застосуванням до робочого пересилання потрібна перевірка на тестових повідомленнях: з очікуваним збігом і без нього.
Поширені запитання
Коли достатньо «Текст» або «Список», а коли потрібен «Regexp»?
Режим «Текст» підходить для однієї відомої фрази, а «Список» дає змогу перелічити кілька варіантів. «Regexp» потрібен, коли текст змінюється за правилом: наприклад, після слова «Заявка» щоразу стоїть новий номер. Він також допомагає задати межі слова або кількість символів. Дія зі знайденим повідомленням налаштовується окремо у фільтрі або заміні.
Чому вираз з онлайн-тестера працює у FLOWIN інакше?
Результат залежить від рушія й налаштувань пошуку. У фільтрах і замінах FLOWIN уже ввімкнено IgnoreCase, Singleline, RE2 та Unicode, а Multiline за замовчуванням вимкнено. Тому регістр літер не розрізняється, крапка може знайти перенесення рядка, а ^ і $ стосуються всього повідомлення. Звірте налаштування пошуку й перевірте вираз у FLOWIN на повідомленнях з очікуваним збігом і без нього.
Чому .* охоплює кілька рядків?
У FLOWIN увімкнено Singleline: крапка відповідає й перенесенню рядка. Тому .* не мусить зупинятися в кінці першого рядка. Якщо потрібно знайти текст до найближчого перенесення, можна використати [^\r\n]+: цей шаблон шукає один або кілька символів, крім повернення каретки й перенесення рядка.
Чому \w не знаходить російських літер?
У налаштуваннях пошуку FLOWIN \w охоплює латинські літери, цифри й підкреслення. Для російських літер використовуйте [а-яё], а для послідовності таких літер [а-яё]+. Літеру ё потрібно вказувати окремо: діапазон а-я її не охоплює. Великі й малі літери розрізняти не потрібно, оскільки пошук уже не враховує регістр.
Як знайти слово цілком, а не всередині іншого слова?
Додайте \b з обох боків слова. Наприклад, \bкіт\b знайде «Кіт» у тексті «Кіт, кітель і скіт», але пропустить два інші слова. Межі перевіряють положення слова, а пробіли й розділові знаки до знайденого фрагмента не входять.
Чи перевіряє шаблон дати з прикладу, чи існує така дата?
Ні. Вираз \d{2}\.\d{2}\.\d{4} перевіряє лише форму запису: дві цифри, крапка, дві цифри, крапка й чотири цифри. Тому він знайде і 16.10.2026, і 99.99.2026. Цей приклад підходить для пошуку фрагментів, схожих на дату, але не підтверджує правильності дня й місяця.
Що перевірити, якщо регулярний вираз нічого не знаходить?
Спочатку переконайтеся, що біля поля «Шукати» вибрано «Regexp». Потім порівняйте шаблон із початковим текстом: пробіли, перенесення рядків і звичайні знаки теж впливають на збіг. Наприклад, Заявка №\d+ вимагає пробілу перед № і цифр після нього, тому не знайде Заявка№125 або Заявка №ABC. Перевірте також межі ^ і $: за замовчуванням вони стосуються всього повідомлення. Почніть із простого фрагмента й додавайте умови по одній, щоразу перевіряючи результат.