为什么 grep 不以这个正则表达式结尾?

Why doesn't grep end with this regexp?

我正在尝试使用 grep 分析我拥有的一堆 C# 文件,以匹配特定类型的 for 循环。具体来说,任何类似于以下内容的内容都会匹配:

for (int i = 0; i < foo.Length; i++)
{
    foo[i] = bar[i];
}

在得知 grep 不支持多行后,我尝试安装 pcregrep,但没有成功。这是我的(不可否认非常草率的)正则表达式:

pcregrep -rlM "for (int i = 0; i < [A-Za-z]*\.Length; i++)\n[ *]\{\n[ *][A-Za-z]*\[i\] = [A-Za-z]*\[i\];\n[ *]\}"

我在大约 10 分钟前 运行 这个命令,它仍然是 运行(尽管 CPU 使用率非常低,令人惊讶)。我做错了什么/有更快的方法吗?

pcregrep,不像grep,不会从-r推断出“使用当前目录”,所以它在等待输入,这让它看起来像挂了。明确指定路径:

pcregrep -rlM … .