Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Function RXGET(ByRef find_pattern As Variant, _
- ByRef within_text As Variant, _
- Optional ByVal submatch As Long = 0, _
- Optional ByVal start_num As Long = 0, _
- Optional ByVal case_sensitive As Boolean = True) As Variant
- ' RXGET - Looks for a match for regular expression pattern find_pattern
- ' in the string within_text and returns it if found, error otherwise.
- ' Optional long submatch may be used to return the corresponding submatch
- ' if specified - otherwise the entire match is returned.
- ' Optional long start_num specifies the number of the character to start
- ' searching for in within_text. Default=0.
- ' Optional boolean case_sensitive makes the regex pattern case sensitive
- ' if true, insensitive otherwise. Default=true.
- Dim objRegex As VBScript_RegExp_55.RegExp
- Dim colMatch As VBScript_RegExp_55.MatchCollection
- Dim vbsMatch As VBScript_RegExp_55.Match
- Dim colSubMatch As VBScript_RegExp_55.SubMatches
- Dim sMatchString As String
- Set objRegex = New VBScript_RegExp_55.RegExp
- ' Initialise Regex object
- With objRegex
- .Global = False
- ' Default is case sensitive
- If case_sensitive Then
- .IgnoreCase = False
- Else: .IgnoreCase = True
- End If
- .pattern = find_pattern
- End With
- ' Return out of bounds error
- If start_num >= Len(within_text) Then
- RXGET = CVErr(xlErrNum)
- Exit Function
- End If
- sMatchString = Right$(within_text, Len(within_text) - start_num)
- ' Create Match collection
- Set colMatch = objRegex.Execute(sMatchString)
- If colMatch.Count = 0 Then ' No match
- RXGET = CVErr(xlErrNA)
- Else
- Set vbsMatch = colMatch(0)
- If submatch = 0 Then ' Return match value
- RXGET = vbsMatch.Value
- Else
- Set colSubMatch = vbsMatch.SubMatches ' Use the submatch collection
- If colSubMatch.Count < submatch Then
- RXGET = CVErr(xlErrNum)
- Else
- RXGET = CStr(colSubMatch(submatch - 1))
- End If
- End If
- End If
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement