找到错误地在单引号内使用的php变量

时间:2017-05-20 17:22:06

标签: php regex

我想从PhpStorm内部运行正则表达式搜索(可能是任何文件管理器,Double / Total Commander也可以处理正则表达式搜索)以匹配单引号内的php变量,因此字符串插值赢了“t = t对他们的工作,例如'$var'

文件的内容如下:

$var = 'Hello world!';

echo 'Lorem ipsum $var dolor sit amet'; // Match this.
echo "Lorem ipsum 'dolor sit amet $var consectetur' adipiscing elit"; // But not this.
echo "Lorem ipsum 'dolor sit amet \$var consectetur' adipiscing elit"; // Or this.

我希望正则表达式搜索匹配第一个语句,但不是第二个或第三个语句。

我已经尝试了'[\w ]+\$[\w]+[\w ]+',但这不起作用,因为它匹配所有语句,无论双引号或转义美元符号。 (regex101)。

这只是一个常规的正则表达式搜索,我想在我的仓库中运行以找到错误的代码。

我可以使用什么正则表达式?

(我不需要在引号之间添加任何文本,只需在单引号之间的php变量进行转义。)

1 个答案:

答案 0 :(得分:1)

您需要的是消极的外观。特别是负面的先行,因为在PHP中你不允许使用无固定长度的lookbehind:

'[\w ]+\$[\w]+[\w ]+'(?![\w$ ']*")

(?![\w$ ']*")表示您要匹配的字符串不得跟"后面,中间有任意数量的字符(您希望在字符串中允许的字符)。

另请参阅:http://www.regular-expressions.info/lookaround.html