I have some troubles with a RegEx which don't do what I expect. Can someone tell me where I'm wrong ?
Goal: Get the first words (if exists) finishing with "'s " (with a space at the end)
RegEx :
".*'s "
Test string and the expected result :
Amarok's Golovin's Road => Amarok's
Arkouna Dream's Elowin Engel's => Arkouna Dream's
Arkouna Dream's Elowin Engel's => Arkouna Dream's (in this case, I added a space after Engel's)
Liubov's Niagara => Liubov's
Urane Of Watson Lake => nothing
Problem: When I have 2 occurences of "'s ", it returns a wrong result.
CodePudding user response:
You can use
^[A-Z][a-zA-Z]*(?:\s [a-zA-Z] )*'s(?!\S)
^\p{Lu}\p{L}*(?:\s \p{L} )*'s(?!\S)
See the regex demo. Details:
^- start of string\p{Lu}- an uppercase letter\p{L}*- zero or more letters(?:\s \p{L} )*- zero or more repetitions of one or more whitespace chars followed with one or more letters's- an'ssubstring(?!\S)- a right-hand whitespace boundary.
