在这种情况下,我如何才能完全匹配RegEx中的字符数?

时间:2017-07-01 10:35:55

标签: php regex

$db = new PDO($dsn, $db_id, $dbpw);
$db= new PDO($dsn, $db_id, $dbpw);

我想准确获取变量名称' $ db'。

应排除以$ db开头的其他变量名。

我写了以下正则表达式:

/(\$db)[^_a-zA-Z0-9]/g

所以' $ db_id'和' $ dbpw'被排除在我的意图之外。

但是,在$ db的右边,一个字符(空格,=等)匹配“更多”'像这样:' $ db',' $ db ='

这不是我的意图。我怎样才能完全匹配' $ db'在这种情况下?

1 个答案:

答案 0 :(得分:1)

您可以使用word boundary (\b)

/(\$db)\b/

根据Regex Tutorial - \b Word Boundaries

  

有三种不同的职位符合词边界:

     
      
  • 在字符串中的第一个字符之前,如果第一个字符是a   字符。
  •   
  • 字符串中的最后一个字符后,如果是最后一个字符   字符是一个字符。
  •   
  • 字符串中的两个字符之间,   其中一个是单词字符而另一个不是单词字符。
  •   
     

简单地说:\ b允许你只执行"整个单词"搜索使用   \ bword \ b形式的正则表达式。一个"字符"是一个   可用于形成单词的字符。所有不是的字符   "字符"是"非单词字符"。