Excel 正则表达式邮件

Excel 正则表达式邮件,excel,vba,Excel,Vba,我想把一根绳子分成三部分。例如,我有一个电子邮件地址,如 testuser@gamil.com 我想把它分成两部分 testuser gamil .com 使用left、right和mid(str),我只能在长度固定的情况下提取字符串。 有人有什么想法吗 使用left、right和mid(str),我只能在长度固定时提取字符串 这实际上不是真的,因为您还可以使用len函数来获取字符串的长度 Dim L as Integer L = Len("testuser@gamil.com") Msg

我想把一根绳子分成三部分。例如,我有一个电子邮件地址,如

testuser@gamil.com
我想把它分成两部分

testuser 
gamil
.com
使用left、right和mid(str),我只能在长度固定的情况下提取字符串。 有人有什么想法吗

使用
left
right
mid
(str),我只能在长度固定时提取字符串

这实际上不是真的,因为您还可以使用
len
函数来获取字符串的长度

Dim L as Integer
L = Len("testuser@gamil.com")
MsgBox L
您还可以使用
Instr
(和
InstrRev
,反向)函数查找特定字符或子字符串的索引

Dim I as Integer
I = Instr("testuser@gamil.com", "@")
因此,对于您的情况,不带正则表达式的自定义函数将返回一个包含三项的数组:

Function SplitEmail(email$)
'Function returns an array like:
'  {"username", "domain", "tld"}

Dim Dot As Integer, At As Integer
Dot = InStrRev(email, ".")
At = InStr(email, "@")

Dim ret(1 To 3) As String

ret(1) = Left(email, At - 1)
ret(2) = Mid(email, At + 1, Dot - At - 1)
ret(3) = Mid(email, Dot + 1)

SplitEmail = ret

End Function
要获取用户名部分,您可以执行以下操作:

Dim some_email$
some_email = "testuser@gamil.com"

MsgBox SplitEmail(some_email)(1)