Каждый день я получаю тысячи писем, и я хочу проанализировать содержимое / тело этих писем, чтобы загрузить их в базу данных.
Моя проблема в том, что сейчас я разбираю тело письма вручную и хочу изменить логику на Регулярное выражение в C#..
Вот тело писем:
Gentilissima Agenzia Nexity Residenziale
il nostro utente:
Sig./Sig.ra: Пабло Азорин
Электронная почта: [email protected]
Тел .: 02322-498900
sta cercando un immobile con le seguenti caratteristiche:
Категория: Residenziale
Типология: Вилла
Контрастный тип: Вендита
Коммуна: Ассаго, пров. Милан
Зона: неспецифические данные
Фасция prezzo: неспецифические данные
Мне нужно выделить текст полужирным шрифтом, и я подумал, что для этого мне нужно RegEx ...
С нетерпением жду вашего предложения о том, как заставить его работать.
Спасибо!
- Пабло





Прочтите Освоение регулярных выражений. Он научит вас всему, что вам нужно знать, чтобы решить эту и другие подобные задачи с регулярными выражениями, и даст вам достаточно понимания и понимания, чтобы вы начали писать гораздо более сложные регулярные выражения.
Если электронные письма всегда имеют один и тот же формат, вы можете сделать это разными способами. Простой способ сделать это - разделить на новую строку и взять подстроку в каждой строке, начиная с метки.
С помощью регулярных выражений вы, вероятно, создадите регулярное выражение, которое создает несколько именованных захватов. Затем вы можете проиндексировать в свойстве Groups совпадения по имени каждой именованной группы, чтобы получить из нее значение. Конечно, это немного сложнее.
Способ substring / IndexOf () также будет быстрее, чем создание сложного регулярного выражения.
Мы обнаружили, что для фильтрации спама и других приложений большого объема регулярные выражения немного медленны для анализа заголовков MIME, что вы и хотите сделать. Код несколько специализирован, но я написал Конечный автомат C для выполнения синтаксического анализа, который работает так же быстро, как и вы, не прибегая к чему-то вроде re2c. Код не для слабонервных, но он невероятно быстр.
Я думаю, что для электронной почты вы обнаружите, что с явным конечным автоматом легче работать, чем с регулярными выражениями. Это также последнее прибежище оператора goto!
Предполагая, что части вашего электронного письма, которые не выделены жирным шрифтом, всегда встречаются во всех ваших электронных письмах, вы можете легко получить все части из своего электронного письма с помощью регулярного выражения:
Sig\./Sig\.ra :(.*)
Email: (.*)
Tel\.: (.*)
sta cercando un immobile con le seguenti caratteristiche:
Categoria: (.*)
Tipologia: (.*)
Tipo di contratto: (.*)
Comune: (.*)
Zona: (.*)
Fascia di prezzo: (.*)
В C#
Regex regexObj = new Regex(@"Sig\./Sig\.ra :(.*)
Email: (.*)
Tel\.: (.*)
sta cercando un immobile con le seguenti caratteristiche:
Categoria: (.*)
Tipologia: (.*)
Tipo di contratto: (.*)
Comune: (.*)
Zona: (.*)
Fascia di prezzo: (.*)");
Match matchObj = regexObj.Match(subjectString);
string Sig = matchObj.Groups[1].Value;
string Email = matchObj.Groups[2].Value;
// and so on to get all the other parts
Вы действительно не хотите делать это вручную или с помощью регулярных выражений. Существует много разных способов кодирования данных в электронном письме, и множество электронных писем, которые не строго соответствуют спецификации, все еще могут быть проанализированы. Я добился успеха с АнПОП в среде .NET.
я думаю, будет лучше разбить эту строку на массив строк вы можете инициализировать словарь со всеми заголовками в качестве ключей и вы будете искать в каждой строке заголовок из словаря (например, «Электронная почта:»), а затем снова поместите результат в словарь как значение в конце у вас будет словарь со всеми названиями и значениями. Я думаю, вам не нужно для этого регулярное выражение. на самом деле в этом случае порядок названий не имеет значения.
Для загрузки электронной почты я использовал объекты Mailbee .Net. Эта библиотека довольно проста в использовании и хорошо документирована. Но если вы хотите избежать программирования, вы также можете использовать парсер электронной почты, например EmailParser2Database.
Спасибо за быстрый комментарий! Вскоре я ознакомлюсь с этой книгой, но пока мне нужно, чтобы это было сделано как можно скорее. Не могли бы вы посоветовать мне, как это реализовать? Ура, - Пабло