2013-03-25 86 views
5

我試圖匹配所有用{}包起來的單詞,但不包含帶有「_loop」的單詞。我無法看到我的註冊表達錯誤。PHP正則表達式負向前瞻

$content = '<h1>{prim_practice_name}</h1><p>{prim_content}</p><p>Our Locations Are {location_loop}{name} - {state}<br/>{/location_loop}</p>'; 
$pattern = '/\{(\w*(?!\_loop))\}/'; 
+0

你正在尋找一個回顧後'<'?!。 – mario 2013-03-25 23:55:09

回答

3

這是因爲\ W *您檢查之前「吃」停止詞「_loop」,以防止你應該檢查這個詞第一次(之前\ W *),如下所示:

$pattern = '/\{((?!\w*_loop\})\w*)\}/'; 

,或者你可以使用一個?< !

$pattern = '/\{(\w*(?<!_loop))\}/';