我正在尝试匹配用{}包裹的所有单词但不包含带有“_loop”的单词。我无法看到我的reg表达式出错的地方。
$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 :(得分:5)
这是因为在检查之前\ w *“吃掉”停止词“_loop”,以防止你应该首先检查单词(在\ w *之前),如下所示:
$pattern = '/\{((?!\w*_loop\})\w*)\}/';
或者您可以使用:?< !
:
$pattern = '/\{(\w*(?<!_loop))\}/';