Perl/regex删除字符串的前3行和后3行

sim*_*ish 6 regex perl string-parsing

我正在寻找构建一个正则表达式语句,以始终删除字符串的前3行,最后3行的字符串(中间部分可以是任意n行内容).任何干净的正则表达式来实现这个输出?(即总是剥去我们的前3行和最后3行的字符串 - 并保留中间部分,这可能是变量#行)

谢谢.

例如

输入字符串:

"
1
2
3
<1...n # of lines content>
4
5
6
"
Run Code Online (Sandbox Code Playgroud)

到期望的输出字符串:

"<1..n # of lines content>"
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 8

以前给出的解决方案非常复杂!所有人都需要

s/^(?:.*\n){1,3}//;
s/(?:.*\n){1,3}\z//;
Run Code Online (Sandbox Code Playgroud)

如果你想在最后接受缺少尾随换行符,你可以使用

s/\n?\z/\n/;
s/^(?:.*\n){1,3}//;
s/(?:.*\n){1,3}\z//;
Run Code Online (Sandbox Code Playgroud)

要么

s/^(?:.*\n){1,3}//;
s/(?:.*\n){0,2}.*\n?\z//;
Run Code Online (Sandbox Code Playgroud)


Ed *_*eal -1

for($teststring)
{
    s/<.*?>//g;
    $teststring =~ s%^(.*[\n\r]+){3}([.\n\r]).([\n\r]+){3}$%$2%;
    print "Outputstring" . "\n" . $teststring . "\n";
}
Run Code Online (Sandbox Code Playgroud)

您需要测试它是否低于 6 行等。