Secondo me la soluzione migliore dovrebbe essere una sorta di loop che percorra tutta la stringa, carattere per carattere simulando le espressioni regolari.
Ad esempio:
i = 1
StringaIndirizzoEMail = "nome@dominio.it"
Area = 1
' Area rappresenta l'area della stringa:
' 1 = nome
' 2 = @
' 3 = dominio
Do While i<= Len(StringaIndirizzoEMail)
Carattere = Mid(StringaIndirizzoEMail, i, 1)



Loop