正则表达式-名称模式

时间:2019-03-18 21:11:40

标签: regex excel vba outlook outlook-vba

我是编码方面的初学者,现在我正在弄清楚如何使用正则表达式。

我正在做的是从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. 姓氏,(马萨诸塞州)Givenname Givenname
  3. 姓氏,(马萨诸塞州)Givenname Givenname Givenname
  4. 姓氏-姓氏,(马萨诸塞州)Givenname Givenname Givenname
  5. 姓氏。姓(Jr.),(Ma。)Givenname姓(Jr。)
  6. 最后一个ñ同名,(马萨诸塞州)Givenname Givenname Givenname-*这是棘手的问题,我似乎找不到找到将其插入到RegEx中的方法。

1 个答案:

答案 0 :(得分:0)

不要尝试包含所有特定的模式。我们不能全部考虑。

您为什么不使用它?

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

enter image description here