1с. Регулярные выражения

1. qaqa 17.01.23 10:11 Сейчас в теме
Добрый день.
Помогите пожалуйста составить регулярное выражение что бы из текста письма выловить ФИО и телефон клиента.
К почте подключаюсь письма прочитать удается.

Попытка
Сообщить("Подключение к почтовому серверу..." + ПочтовыйПрофиль.АдресСервераIMAP);
Email = Новый ИнтернетПочта;
Email.Подключиться(ПочтовыйПрофиль, ПротоколИнтернетПочты.IMAP);

МассивСообщений = Новый Массив;
Сообщить("Чтение писем...");
МассивСообщений = Email.Выбрать(Ложь); // Ложь - письма с сервера не удаляются
Исключение
Сообщить("Ошибка подключения к серверу: " + ОписаниеОшибки());
КонецПопытки;

Если МассивСообщений.Количество() > 0 Тогда
Номер = 1;
Сообщить(Номер);
//
RegExp = Новый COMОбъект("VBScript.RegExp"); // создаем объект для работы с регулярными выражениями
RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка

Для каждого Письмо Из МассивСообщений Цикл
НомерП = "";
Сообщить("Тема: " + Письмо.Тема);

Позиция = Найти(Письмо.Тема, "[");
НомерП = Сред(Письмо.Тема, Позиция+1, 1);
Сообщить(НомерП);
ФИО = "";
Если НомерП = "4" Тогда
Для Каждого Содержание из Письмо.Тексты Цикл
Сообщить(Содержание.Текст);

RegExp.Pattern = "Имя*
(.*?)
";
Matches=RegExp.Execute(Содержание.Текст);
ЧислоВхождений=Matches.Count();
Если ЧислоВхождений>0 Тогда
Match = Matches.Item(0);
ФИО = Match.Value;
Сообщить("ФИО " + ФИО);
Иначе
Сообщить("Вхождений шаблона не найдено");
КонецЕсли;

КонецЦикла;

КонецЕсли;
КонецЦикла;
Показать


Не могу сообразить на что надо поменять строку
RegExp.Pattern = "Имя*(.*?)";


Вывод такой:
Подключение к почтовому серверу...imap.yandex.ru
Чтение писем...
Тема: Fwd: заполнена web-форма [4] Подбор автозапчастей по VIN номеру
_____
<div> </div><div> </div><div>-------- Пересылаемое сообщение --------</div><div>10.01.2023, 15:56</div><div> </div><div>Заполнена web-форма: [4] Подбор автозапчастей по VIN номеру-------------------------------------------------------Дата - 10.01.2023 14:55:34Результат - 315Пользователь - [не зарегистрирован]Посетитель - 413084Сессия - 422377VIN номер*******************************VIN-CODEНазвание запчасти*******************************Подушка безопасности водителяИмя*******************************ВикторТелефон*******************************+7 (000) 000-00-00Подробно опишите, что вы ищите*******************************Подушка безопасности водителя RENAULT SANDERO-1 поколениеПисьмо сгенерировано автоматически.                                                 </p></div><div> </div><div>-------- Конец пересылаемого сообщения --------</div>
ФИО Имя*******************************

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3167 17.01.23 10:45 Сейчас в теме
(1)
RegExp.Pattern = "Имя.*
(.*?)
";
Может так?
5. qaqa 17.01.23 12:13 Сейчас в теме
(2)
Имя.*
(.*?)
";

Выводит много лишнего :
Имя*******************************ВикторТелефон*******************************+7 (000) 000-00-00Подробно опишите, что вы ищите*******************************Подушка безопасности водителя RENAULT SANDERO-1 поколение

Показать
6. starik-2005 3167 17.01.23 12:17 Сейчас в теме
(5)
Выводит много лишнего
Ну так ограничьте это лишнее. Если у Вас там перед именем и после него "*", то укажите их вне группы. Типа "Имя\*+?(.*?)\*+" - поиграйтесь в блокноте++.
8. starik-2005 3167 17.01.23 12:33 Сейчас в теме
(5) "Имя\s+\*+\s+(.*?)\s+Телефон\s+\*+\s+(.*?)$\s+^.+?$\s+\*+\s+(.+?)$" - как-то так для имени, телефона и запчасти. Кривенько - ну так нет пределов совершенству...
3. user1326147 17.01.23 11:51 Сейчас в теме
У меня так:
'Имя\n\*.*\n(.*)\n'
4. qaqa 17.01.23 12:00 Сейчас в теме
(3) У меня пишет, что вхождений не найдено
7. user1326147 17.01.23 12:22 Сейчас в теме
Чтобы нашел "Имя" кириллицей, нужно чтобы кодировки совпадали в письме utf-8, а в VBScript может быть Windows 1251, русские буквы ищет?
9. qaqa 17.01.23 13:26 Сейчас в теме
спасибо всем кто откликнулся. воспользовался вот такой конструкцией вдруг кому-то сократить время поисков.
RegExp.Pattern = "Имя: (.*?)<b";
Matches = RegExp.Execute(Содержание.Текст);
Match = Matches.Item(0);
ФИО = Match.SubMatches.Item(0);
Сообщить(ФИО);

Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот