Typical Replacement Example
Dim objRegExp As Object ' RegExp using Microsoft VBScript 5.5 Set objRegExp = CreateObject(vbscript.regexp) Dim res As String res = Some text to stuff around with objRegExp.Global = True ' match all instance objRegExp.IgnoreCase = True ' Multi-space to space objRegExp.Pattern = [ ]+ res = objRegExp.Replace(res ) Matching Sub Strings Dim regEx As New regexp Dim matches Dim s As String Dim m As match Dim sm As SubMatches ' sub matches Dim ms ' match sub string regEx.pattern = ^(\w+)-(\d+)\s*(\w+)\s*(.*)\.(.*)$ regEx.IgnoreCase = True 'True to ignore case regEx.Global = True 'True matches all occurances False matches the first occurance If regEx.test(myFilename) Then Set matches = regEx.Execute(myFilename) If matches.Count <> 1 Then GoTo matchFail Set sm = matches(0).SubMatches ' MUST get submatches to retrieve the matched text. Usually get matches(0) (ie. the first match) If sm.Count <> 5 Then GoTo matchFail myCreditCat = sm(0) ' ie. This is matches(0)(0) : first match's first sub-match myCreditNum = CInt_Safe(sm(1)) myDocCode = sm(2) myDocTitle = sm(3) myFileExt = sm(4) Else GoTo matchFail endif
Patterns
Non-printable characters excluding \r \n |
[\x00-\x09\x0B\x0C\x0E-\x1F] |
Break this down: Wat-5 Mooses.suffix |
^(\w+)-(\d+)\s*(\w+)\s*(.*)\.(.*)$ |
Matching Simple Function
'
' Return the first match. For example
' pattern = "- (.*)"
' text = "- asd this"
' return "asd this"
'
Public Function RegExSimpleMatch(pattern As String, s As String) As String
Dim re As New RegExp
Dim ms As MatchCollection
Dim sms As submatches
On Error GoTo huh
re.pattern = pattern
re.IgnoreCase = True 'True to ignore case
re.Global = True
If re.Test(s) Then
Set ms = re.Execute(s)
Set sms = ms(0).submatches()
RegExSimpleMatch = sms(0)
Else
RegExSimpleMatch = ""
End If
Exit Function
huh:
Debug.Print Err.Description
RegExSimpleMatch = ""
End Function
Private Sub RegExSimpleMatchTEST()
Debug.Assert (RegExSimpleMatch("^-(.*)", "nothing") = "")
Debug.Assert (RegExSimpleMatch("^-(.*)", "-something") = "something")
Debug.Assert (RegExSimpleMatch("^-(.*)", "--something") = "-something")
Debug.Assert (RegExSimpleMatch("^-(.*)", " - -nothing") = "")
End Sub