douke3442 2011-07-18 23:26
浏览 108
已采纳

PHP:正则表达式匹配字符串前面没有美元符号

In my syntax highlighter, I use regex to parse different terms. Below is how I parse PHP classes:

foreach ( PHP::$Classes as $class )
    $code = preg_replace( "/\b{$class}\b/", $this->_getHtmlCode( $class, PHP::$Colors['class'] ), $code );

Now, just ignore the PHP class and the _getHtmlCode function. The regex, "/\b{$class}\b/", matches names such as count. If I make a variable named $count, it matches that was well.

How can I look for class names that are not preceded by a $?

  • 写回答

3条回答 默认 最新

  • dongluan1901 2011-07-18 23:34
    关注

    You could use a negative zero-width look-behind to accomplish the same task - basically, to make sure that there isn't a dollar sign before your text: /(?<!\$){$class}/.

    (?<!     # Non-capturing look-behind group, captures only if the following regex is NOT found before the text.
      \$)    # Escaped dollar sign
    {$class} # Class name
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图