I want to write a regular expression that will replace the word Paris by a link, for only the word is not ready a part of a link.
Example:
i\'m l
This is hard to do in one step. Writing a single regex that does that is virtually impossible.
Try a two-step approach.
Paris), and eliminate the inner link.Regex for step one is dead-simple:
\bParis\b
Regex for step two is slightly more complex:
(]+>.*?(?!:))]+>(Paris)
Use that one on the whole string and replace it with the content of match groups 1 and 2, effectively removing the surplus inner link.
Explanation of regex #2 in plain words:
]+>), optionally followed by anything that is not itself followed by a closing link (.*?(?!:)). Save it into match group 1.]+>). Make sure it is there, but do not save it.). Make sure it is there, but don't save it.The approach assumes these side conditions:
(?!:...)).Paris" becomes "Paris", or step two will fail (until you change the second regex).BTW: regex #2 explicitly allows for constructs like this:
in the capital of France, Paris
The surplus link comes from step one, replacement result of step 2 will be: