Перейти к основному содержимому

Извлечение данных с помощью регулярных выражений

Сценарий. Из произвольного текста (комментарий документа, сообщение чата, импортированный файл) нужно извлечь номера телефонов и email-адреса.

Шаг 1. Построить регулярное выражение

Откройте Универсальные инструменты → Конструктор регулярных выражений.

Для телефона (российский формат):

\+?7\d{10}|8\d{10}

Для email:

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}

Шаг 2. Протестировать на образце

Вставьте в поле тестирования текст:

Клиент: Иванов, тел. +79261234567
Резервный: 84951234567
Email: ivanov@example.com, buh@company.org

Конструктор подсветит все совпадения. Убедитесь, что оба номера и оба адреса найдены верно.

Шаг 3. Сгенерировать и использовать код

Процедура ИзвлечьКонтактыИзТекста(ИсходныйТекст)

ШаблонТелефон = "\+?7\d{10}|8\d{10}";
ШаблонEmail = "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}";

ВсеТелефоны = УИ_РегулярныеВыраженияКлиентСервер.НайтиВсе(
ИсходныйТекст,
ШаблонТелефон
);

ВсеEmails = УИ_РегулярныеВыраженияКлиентСервер.НайтиВсе(
ИсходныйТекст,
ШаблонEmail
);

Сообщить("Найдено телефонов: " + ВсеТелефоны.Количество());
Для каждого Тел Из ВсеТелефоны Цикл
Сообщить(" " + Тел.Значение);
КонецЦикла;

Сообщить("Найдено email: " + ВсеEmails.Количество());
Для каждого EM Из ВсеEmails Цикл
Сообщить(" " + EM.Значение);
КонецЦикла;

КонецПроцедуры

Связанные разделы