Regex Match Ampersand but not escaped xml characters
Asked Answered
P

1

19

I would like to match ampersand (&) but not when it exists in following manner

'
"
>
<
&
&#

So in the following line & MY& NAME IS M&Hh. ' " > < & &# &&&&&&

I want it to match all ampersands except those which exist in ' " > < & &#

Platter answered 7/5, 2013 at 15:36 Comment(0)
S
34

That looks like a job for negative lookahead assertions:

&(?!(?:apos|quot|[gl]t|amp);|#)

should work.

Explanation:

&        # Match &
(?!      # only if it's not followed by
 (?:     # either
  apos   # apos
 |quot   # or quot
 |[gl]t  # or gt/lt
 |amp    # or amp
 );      # and a semicolon
|        # or
 \#      # a hash
)        # End of lookahead assertion
Shaefer answered 7/5, 2013 at 15:38 Comment(2)
Nice regex, Tim. I'm still in love with this tool, so pardon me while I link a fancier diagram.Viccora
I wish I had more than one vote. This was a very helpful answer! Exactly what I was looking for.Sheffield

© 2022 - 2024 — McMap. All rights reserved.