PHP正则表达式否定前瞻

时间:2013-03-25 23:50:48

标签: php regex-negation

我正在尝试匹配用{}包裹的所有单词但不包含带有“_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))\}/';

1 个答案:

答案 0 :(得分:5)

这是因为在检查之前\ w *“吃掉”停止词“_loop”,以防止你应该首先检查单词(在\ w *之前),如下所示:

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

或者您可以使用:?< !

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