7

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

1 回答 1

7

发生这种情况是因为 \w* 在您检查之前“吃掉”了停止词“_loop”,以防止您应该首先检查这个词(在 \w* 之前),如下所示:

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

或者你可以使用: ?< !:

$pattern = '/\{(\w*(?<!_loop))\}/';
于 2013-03-26T00:18:16.057 回答