Регулярные выражения - шаблоны имен - PullRequest
4 голосов
/ 19 марта 2019

Я начинающий, когда дело доходит до кодирования, и сейчас я выясняю, как использовать регулярные выражения.

Что я делаю, так это извлекаю данные из входящих писем в Outlook 2013. Я использую VBA + RegEx для извлечения нужных мне данных и их консолидации / переноса в рабочую таблицу Excel, но моя проблема с именами. Я могу выяснить, какой шаблон нужен, поскольку существует множество возможных структур имен.

Вот образец письма

ID: 123456
Name: Dela Peña, Juan Carlos
Department: Accounts
Shift: 10:00 - 18:00

Вот что я имею в своем VBA:

.pattern = "(Name[:]+\s*(\w*-\w*)?(\s\w*)?(\s\w*[.]?)?(\s\w*[.]?)?[,]?(\s\w*[.]?)?(\s\w*[.]?)?(\s\w*[.]?))"

А вот список возможных комбинаций имен / комбинаций, которые могут отображаться на входящих письмах:

  1. Фамилия, (Ma.) Имя (Jr.)
  2. Фамилия, (Ма.) Имя Фамилия
  3. Фамилия, (Ма.) Имя Имя Имя Имя
  4. фамилия-фамилия, (ма.) Имя Имя Имя Имя
  5. Lastname. Фамилия (младший), (Ма.) Имя Фамилия (младший)
  6. Last - * ame, (Ma.) Givenname Givenname Givenname - * Здесь все становится сложно, и я не могу найти способ вставить его в свой RegEx.

1 Ответ

0 голосов
/ 19 марта 2019

Не пытайтесь включить все конкретные шаблоны. Мы не можем думать о них всех.

Почему бы тебе не использовать это?

(?i)Name:(?:.|[\n\r\t\s])*?(?=[\n\r\t\s]*(?:Department|ID|Shift|Name)[\n\r\t\s]*:|$)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...