Link to home
Start Free TrialLog in
Avatar of peispud
peispudFlag for Canada

asked on

Need a regex pattern to find a string between two strings

Hi
I am looking to get the customer's name  from a multi-page computer generated document.  In these documents, then name of the customer always follows the pattern shown below.  


1) Customer Information                  ----- (string constant)
2) Customer                                       ------ (string constant)
3) Customer Name                           ------ (information being sought)
4) Contact Telephone Number ----------  (string constant)

It actually looks like this in the document.  There is a line feed after each string constant  and customer name.

Customer Information
Customer
John Doe
Contact telephone number


There would only be one instance of a customer per document. Could someone help me with the regex pattern please.  

Thank you.
Avatar of Rgonzo1971
Rgonzo1971

Hi,

pls try EDITED
Customer\n(.*)\nContact Telephone Number

Open in new window

REgards
Avatar of peispud

ASKER

Nope..  it didn't work for me.

Just in case, I will include the code.  Perhaps I've got something else wrong.

 Public Function ExtractTMIData(ByVal strXX As String) As Ticket()
    Dim reg As New regExp
'    reg.Pattern = "Customer Information\s+Customer"
    reg.Pattern = "Customer\n(.*)\nContact Telephone Number"
    reg.Global = True
    reg.IgnoreCase = True
    Dim Matches As MatchCollection
    Set Matches = reg.Execute(strXX)
End Function

Open in new window

Maybe replace \n with \n\r
then try
 Public Function ExtractTMIData(ByVal strXX As String) As Ticket()
    Dim reg As New regExp
'    reg.Pattern = "Customer Information\s+Customer"
    reg.Pattern = "Customer\n\r(.*)\n\rContact Telephone Number"
    reg.Global = True
    reg.IgnoreCase = True
    Dim Matches As MatchCollection
    Set Matches = reg.Execute(strXX)
ExtractTMIData = Matches(0).SubMatches(0)
End Function

Open in new window

Could you send a dummy file?
Avatar of peispud

ASKER

Nope.  

The last command
ExtractTMIData = Matches(0).SubMatches(0)

Open in new window

generated an error code.  
Even with this commented out,  I did not get the customer name.
Avatar of peispud

ASKER

Ok..  here is a file with the important information changed.

I need to extract "John Doe"
Avatar of peispud

ASKER

Oops... Here is the file
Test.docx
SOLUTION
Avatar of Rgonzo1971
Rgonzo1971

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Dim myMatch As Match
Dim myMatches As MatchCollection
Dim myRegExp As RegExp
Set myRegExp = New RegExp
myRegExp.Pattern = "Customer\r?\n(.*)"
Set myMatches = myRegExp.Execute(SubjectString)
For Each myMatch In myMatches
	'matched text: myMatch.Value
	'match start: myMatch.FirstIndex
	'match length: myMatch.Length
	'backreference n text: myMatch.SubMatches(n-1)
Next

Open in new window


This is for VB6.
Avatar of peispud

ASKER

Thank you both for your help.

This is awesome!!