2013-05-07 61 views
16

我想匹配符號(&),而不是當在以下行正則表達式匹配和號,但沒能逃脫XML字符

' 
" 
> 
< 
& 
&# 

所以下面的方式存在,它 & MY& NAME IS M&Hh. ' " > < & &# &&&&&&

我希望它匹配除了那些存在於 之外的所有&符號' " > < & &#

回答

25

看起來像negative lookahead assertions的作業:

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

應該工作。

說明:

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

尼斯正則表達式,蒂姆。我仍然愛上這個工具,所以請原諒我,而我[鏈接一個更好的圖表](http://www.regexper.com/#%26(%3F!(%3F%3Aapos%7Cquot%7C%5Bgl %5DT%7Camp)%3B%7C%23))。 – 2014-02-13 04:38:07