我正在尝试找到在更新 PHP 代码示例中会抛出错误的 PHP 代码,其中 $variable[inside] 应为 $variable['inside']
我尝试使用 grep 扫描文件来解决它们,但使用正则表达式没有取得太大成功
grep -iR '\$*\[' ./
它显示了严重的错误,但也显示了一堆不应该显示的东西
答案1
您可以使用-P
PCRE 正则表达式的选项:
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