Estou procurando uma função regex que corresponda exatamente a essas variantes de "SA..." (SAC, SAD, SAE, SAP, SAW, SAAC, SAAN, SAAS, SABE, SABW ), mas sem diferenciar maiúsculas de minúsculas.
O problema é que pode haver um ou mais separadores (espaço, barra invertida /, ponto, hífen -) entre cada caractere de cada palavra, por exemplo, "S /AC", "SA.P", "S / AB W".
Acabei com o padrão abaixo; sim, funciona, mas é feio e muito longo!
Existe um melhor e mais compacto?
Option Explicit
Option Compare Text
Function MatchSAWord(ByVal inputText As String) As Boolean
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Dim sep As String, pat As String
sep = "[ .\/-]*"
pat = "\b(" & _
"S" & sep & "A" & sep & "C" & "|" & _
"S" & sep & "A" & sep & "D" & "|" & _
"S" & sep & "A" & sep & "E" & "|" & _
"S" & sep & "A" & sep & "P" & "|" & _
"S" & sep & "A" & sep & "W" & "|" & _
"S" & sep & "A" & sep & "A" & sep & "C" & "|" & _
"S" & sep & "A" & sep & "A" & sep & "N" & "|" & _
"S" & sep & "A" & sep & "A" & sep & "S" & "|" & _
"S" & sep & "A" & sep & "B" & sep & "E" & "|" & _
"S" & sep & "A" & sep & "B" & sep & "W" & _
")\b"
With regex
.Global = False
.IgnoreCase = True
.pattern = pat
End With
MatchSAWord = regex.Test(inputText)
End Function