我试图用正则表达式精确匹配“SA..”的这些变体(SAC、SAD、SAE、SAP、SAW、SAAC、SAAN、SAAS、SABE、SABW),但不区分大小写。
问题是每个单词的每个字符之间可能存在一个或多个分隔符(空格、反斜杠 /、点 . 、连字符 -),例如“ S /AC”、“SA.P”、“S / AB W”。
我最终得到了下面的模式,是的,它有效,但它很丑而且很长!:
有没有更好更紧凑的模式?
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