InstrTblRev - The last occurrence of a char in a table
' If INCLUDE is True or is omitted, return the last occurrence of a character
' in a group
' or -1 if SOURCE doesn't contain any character among those listed in TABLE.
' If INCLUDE is False, return the last occurrence of the character in SOURCE
' that does not appear in TABLE.
'
' string indices are zero-based
' START = -1 searches from the end of string
' TABLE can be in the form "A-Z"
Function InstrTblRev(ByVal Start As Integer, ByVal Source As String, _
ByVal Table As String, Optional ByVal Include As Boolean = True, _
Optional ByVal CaseInsensitive As Boolean = False) As Integer
' create the regular expression
Dim pattern As String
If Include Then
pattern = "[" & Table & "]"
Else
pattern = "[^" & Table & "]"
End If
' prepare the correct regex option
Dim options As Text.RegularExpressions.RegexOptions
If CaseInsensitive Then
options = Text.RegularExpressions.RegexOptions.IgnoreCase
End If
' create the Regex object
Dim re As New Text.RegularExpressions.Regex(pattern, options)
' adjust arguments for backward search
Source = StrReverse(Source)
If Start >= 0 And Start < Source.Length Then
Start = Source.Length - Start
Else
Start = 0
End If
' find the match
Dim ma As Text.RegularExpressions.Match = re.Match(Source, Start)
' return the found index, or -1
If ma.Success Then
Return Source.Length - ma.Index - 1
Else
Return -1
End If
End Function