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

我正在做的是从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*[.]?))"


这是可能出现在传入邮件中的名称模式/组合的列表:


姓氏(Ma。)姓氏(小)
姓氏,(姓氏)Givenname Givenname
姓氏,(马萨诸塞州)Givenname Givenname Givenname
lastname-Lastname,(麻省)Givenname Givenname Givenname
姓。姓(小),(硕士)姓(名)
Lastñame,(马萨诸塞州)Givenname Givenname Givenname-*这是棘手的问题,我似乎无法找到将其插入到RegEx中的方法。

最佳答案

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

你为什么不使用这个?

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


regex - 正则表达式-名称模式-LMLPHP

07-24 19:04