I'm trying to capture the 2 lines below from beginning to before the AJ sign.
TSA01-19AUG80/F/LEE/ANGIE/JEAN AJ 17NOV 2124Z
TSA01-19AUG80/F/LEE/ANGIE/JEAN MARIE AJ 17NOV 2124Z
The end of the line (AJ 17NOV 2124Z) is not constant and may be different every time.
I was able to capture this line by using this format - TSA01-([^\s] )
TSA01-19AUG80/F/LEE/ANGIE/JEAN AJ 17NOV 2124Z
But I'm stuck on if someone has an extra space in their first name, like below. How do I capture the 2nd name without capturing the AJ 17NOV 2124Z?
TSA01-19AUG80/F/LEE/ANGIE/JEAN MARIE AJ 17NOV 2124Z
CodePudding user response:
Try:
.*(?=(?:\s \S ){3}$)
This will match all string until last three words at the end.
CodePudding user response:
Perhaps it would suffice to capture before the date like pattern 17NOV consisting of 1 or 2 digits and 1 or more characters A-Z:
^TSA01-.*?(?=\s \d{1,2}[A-Z] \b)
Explanation
^Start of stringTSA01-Match literally.*?Match any character except a newline, as few as possible(?=Positive lookahead, assert that to the right is:\s \d{1,2}[A-Z] \bMatch 1 whitespace chars, 1-2 digits followed by 1 chars A-Z
)Close the lookahead
See a regex demo,
