我无法理解perl中的多行匹配如何工作 我有一个文件要删除以下内容:
@keyword{
或
@keyword
{
在两种情况下,@都是该行的第一个字符。
我可以用两个单独的指令(用'perl -p0777')来做到这一点:
s/\n\@keyword\{//
s/\n\@keyword\n\{//
但我认为以下内容也可以
s/\n\@keyword\n?\{//
,但不是。它没有抓住第二种情况,我不明白为什么?
有什么解释吗?
答案 0 :(得分:-1)
啊! 知道了 由于使用了perl -p0777,整个文件只有一行, 表达式在整个文件上匹配一次,因此每个语句都完全匹配一个模式。 解决方案是在最后加上“ g”:
s/\n\@keyword\n?\{//g
但是现在另一个。
我首先没有-0777选项 我认为
s/^\@keyword\n?\{//m
会工作。 但是,它仍然没有抓住第二种情况(两行模式)。 你能解释为什么吗?