peispud
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.
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.
ASKER
Nope.. it didn't work for me.
Just in case, I will include the code. Perhaps I've got something else wrong.
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
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
Could you send a dummy file?
ASKER
Nope.
The last command
Even with this commented out, I did not get the customer name.
The last command
ExtractTMIData = Matches(0).SubMatches(0)
generated an error code. Even with this commented out, I did not get the customer name.
ASKER
Ok.. here is a file with the important information changed.
I need to extract "John Doe"
I need to extract "John Doe"
ASKER
Oops... Here is the file
Test.docx
Test.docx
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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
This is for VB6.
ASKER
Thank you both for your help.
This is awesome!!
This is awesome!!
pls try EDITED
Open in new window
REgards