troubleshooting Question

Regular expressions in VBA, search for more than one ASCII Code

Avatar of MrDavidThorn
MrDavidThorn asked on
Regular ExpressionsVB Script
5 Comments1 Solution476 ViewsLast Modified:
Hi Folks, should be some easy points up for grabs here, Im using regular expressions 5.5 to search and replace a string based on ASCII codes, I have created a procedure that calls the regexe code and replaces the ASCII Code with whitespace, If I want to search and replace two codes I currently call the procedure twice, when Im guessing that I can somehow edit the pattern to search for two codes, any examples would be great.
Sub Checkfile()
Dim FSO As New FileSystemObject
Dim fsoFile As File
'Open an XML file to search for illegal characters
Set SourceFile = FSO.OpenTextFile("C:\TestWithInvalidCharcter.xml")
'Create a new XML file that would not contain new xml file
FSO.CreateTextFile ("C:\Test.xml")
fnum = FreeFile()
Open "C:\Test.xml" For Append As fnum

Do While Not SourceFile.AtEndOfStream
    'replace any ascii code 240 with whitespace and print to the file
    Print #fnum, TestRegExp("\240 040", SourceFile.ReadLine)
        'replace any ascii code 040 with white space and print to the file
    Print #fnum, TestRegExp("\040", SourceFile.ReadLine)
Loop
Close fnum


End Sub
Function TestRegExp(myPattern As String, myString As String)
   'Create objects.
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String
   
   ' Create a regular expression object.
   Set objRegExp = New RegExp

   'Set the pattern by using the Pattern property.
   objRegExp.Pattern = myPattern

   ' Set Case Insensitivity.
   objRegExp.IgnoreCase = True

   'Set global applicability.
   objRegExp.Global = True
   'Test whether the String can be compared.
   If (objRegExp.Test(myString) = True) Then

   'Get the matches.
    Set colMatches = objRegExp.Execute(myString)   ' Execute search.

    For Each objMatch In colMatches   ' Iterate Matches collection.
           RetStr = objRegExp.Replace(myString, " ")
    Next
   Else
    RetStr = myString
   End If
   TestRegExp = RetStr
End Function

Open in new window

ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros