我无法理解多线匹配如何在perl中工作我有一个文件,我想删除任何外观:
@keyword{
要么
@keyword
{
在这两种情况下,@是该行的第一个字符。
我可以用两个单独的指令(使用'perl -p0777')来完成它:
s/\n\@keyword\{//
s/\n\@keyword\n\{//
但我认为以下内容也会奏效
s/\n\@keyword\n?\{//
它没有。它没有赶上第二种情况,我不明白为什么???
任何解释?
啊啊!刚刚得到它。由于perl -p0777,整个文件只有一行,表达式在整个文件中匹配一次,因此每个语句只匹配一个模式。解决方案是将'g'放在最后:
s/\n\@keyword\n?\{//g
但现在又是另一个。
我刚开始没有-0777选项,我想到了
s/^\@keyword\n?\{//m
会工作。但它再次没有赶上第二种情况(两行模式)。你能解释一下原因吗?