Я пытаюсь совместить все слова, завернутые с {}, но не словами с «_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))\}/';