【问题标题】:PHP Regexp negative lookaheadPHP 正则表达式负前瞻
【发布时间】:2013-03-25 23:50:47
【问题描述】:

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

【问题讨论】:

  • 你正在寻找一个后向 ?&lt;!

标签: php regex-negation


【解决方案1】:

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

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

或者你可以使用:?&lt; !

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

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 2011-10-14
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多