在字符之间使用 Grep 来查找错误

在字符之间使用 Grep 来查找错误

我正在尝试找到在更新 PHP 代码示例中会抛出错误的 PHP 代码,其中 $variable[inside] 应为 $variable['inside']

我尝试使用 grep 扫描文件来解决它们,但使用正则表达式没有取得太大成功

grep -iR '\$*\[' ./

它显示了严重的错误,但也显示了一堆不应该显示的东西

答案1

您可以使用-PPCRE 正则表达式的选项:

grep -RP "\\$\\w+\\[[^']+\\]" .

或者,如果-P由于某种原因不可用,-E则使用扩展正则表达式:

grep -RE "\\$\\w+\\[[^']+\\]" .

如果你想检查单双引号:

    grep -RP "\\$\\w+\\[[^'\"]+\\]" .

或者

    grep -RE "\\$\\w+\\[[^'\"]+\\]" .

两者都很好,但由于包括两种情况,所以这个-i选项在这里没用。\w

解释:

"           # regex delimiter
\\$         # $ sign, have to be double escaped because of " delimiter
\\w+        # 1 or more word character as a variable name contains only word character (i.e. [a-zA-Z0-9_])
\\[         # openning square bracket
[^']+       # negative character class, 1 or more any character that is not single quote
\\]         # closing square bracket
"           # regex delimiter

相关内容