将匹配PHP变量但不匹配对象和函数调用的正则表达式
我正在开发一个正则表达式,它将匹配将匹配PHP变量但不匹配对象和函数调用的正则表达式,php,regex,Php,Regex,我正在开发一个正则表达式,它将匹配 $foo $bar $baz 但不是 $foo->bar 到目前为止,我已经 /\$([a-zA-Z_][a-zA-Z_0-9]*(?!->))/ 不幸的是,此模式与$fo匹配。请参阅。使用所有格量词,该量词将不允许回溯到[a-zA-Z_0-9]子模式: \$([a-zA-Z_][a-zA-Z_0-9]*+(?!->)) ^^ 或者甚至(如果您没有使用/u修饰语或(*UCP)动词,则作为
$foo $bar $baz
但不是
$foo->bar
到目前为止,我已经
/\$([a-zA-Z_][a-zA-Z_0-9]*(?!->))/
不幸的是,此模式与
$fo
匹配。请参阅。使用所有格量词,该量词将不允许回溯到[a-zA-Z_0-9]
子模式:
\$([a-zA-Z_][a-zA-Z_0-9]*+(?!->))
^^
或者甚至(如果您没有使用/u
修饰语或(*UCP)
动词,则作为[a-zA-Z_0-9]
=\w
):
看
问题是,当反向前瞻失败时,回溯开始发挥作用,并且由于*
允许回溯到量化子模式中,因此会找到未跟在->
后面的o
,并返回匹配项
请参阅,特别注意回溯步骤:
@Downvoter:如果有任何不清楚的地方,请随时发表评论。
\$([a-zA-Z_]\w*(?!->))