2013-05-07 9 views
16

chciałbym aby dopasować ampersand (&), ale nie wtedy, gdy istnieje w następujący sposóbRegex Mecz Ampersand ale nie uciekły znaki XML

' 
" 
> 
< 
& 
&# 

Więc w następnym wierszu & MY& NAME IS M&Hh. ' " > < & &# &&&&&&

chcę go pasują do wszystkich ampersandów z wyjątkiem tych, które istnieją w ' " > < & &#

Odpowiedz

25

To wygląda na pracę dla negative lookahead assertions:

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

powinien działać.

Objaśnienie:

&  # 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 
+4

Nicea regex, Tim. Nadal jestem zakochany w tym narzędziu, więc wybaczcie mi, podczas gdy ja [łączę schemat hodowców] (http://www.regexper.com/#%26 (% 3F! (% 3F% 3Aapos% 7Cquot% 7C% 5Bgl % 5Dt% 7Camp)% 3B% 7C% 23)). –