PHP Regexp отрицательный lookahead

Я пытаюсь совместить все слова, завернутые с {}, но не словами с «_loop». Я не вижу, где я ошибаюсь в своем выражении.

$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))\}/'; 

    Это происходит потому, что \ w * «ест» остановить слово «_loop» перед тем, как вы проверите, для предотвращения этого, сначала нужно проверить слово остановки (до \ w *), например:

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

    или вы можете использовать? <! , как это:

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