我正在尝试清理一串电子邮件地址:
bruce.wayne@batcave.com;#30; #clarke.kent@dailyplanet.com;#32; #the.joker@arkhamassylum.com;#33
我不知道列表中会有多少封电子邮件,而且数字也会改变长度。
我试过了:
(?!([\w-]+\.)[\w-]+@([\w-]+\.)+[\w;]+)
作为模式,但不起作用。
这一切都在VBA中完成。
答案 0 :(得分:3)
您不需要正则表达式来执行此操作。
您的地址以",#"
字符串分隔。使用Split
函数将字符串拆分为值数组。然后迭代数组,只打扰包含@
字符的条目。
下面的代码产生了这个输出:
bruce.wayne@batcave.com clarke.kent@dailyplanet.com the.joker@arkhamassylum.com
Sub Test()
Const stringValues As String = "bruce.wayne@batcave.com;#30;#clarke.kent@dailyplanet.com;#32;#the.joker@arkhamassylum.com;#33"
Dim values As Variant
values = Split(stringValues, ";#")
Dim value As Variant
For Each value In values
If InStr(value, "@") Then
' You've got mail!
Debug.Print value
End If
Next
End Sub
答案 1 :(得分:2)
“我需要翻转它,以便保留电子邮件地址和 数字和哈希标志被删除“
您可以定位要删除的内容,而不是定位有效部分:
#\d+;?#?
“一个标志,后跟一个或多个数字,然后是分号(可能),然后是一个英镑符号(可能)”
现在只需用空字符串替换you should have a clean list of email addresses。
答案 2 :(得分:0)