在编码方面,我是一个初学者,目前正在学习如何使用正则表达式。
我的工作是从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*[.]?))"
以下是可能出现在收件人电子邮件中的姓名模式/组合列表:
- 姓氏,(夫人)名字(小)
- 姓氏,(夫人)名字 名字
- 姓氏,(夫人)名字 名字 名字
- lastname-姓氏,(夫人)名字 名字 名字
- 姓氏。 姓氏(小),(夫人)名字 名字 (小)
- 姓ñame,(夫人)名字 名字 名字 - *这就是问题所在,我找不到一种方法将其插入到我的RegEx中。
Name:\s*(.+)
?如果你只需要获取在Name:
和 0 个或多个空白字符之后的整行内容,那么这应该可以工作。然后你可以通过第一组来获得值,甚至在需要时用逗号分隔。 - Wiktor StribiżewName:\s(.+),\s(.+)
- cybernetic.nomad