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