【发布时间】:2020-08-13 13:33:38
【问题描述】:
我要匹配:
Start Here Some example
text covering a few
lines. End Here
所以我愿意
$ perl -nle 'print $1 if /(Start Here.*?)End Here/s'
然后粘贴上面的文本和ctr-D。它与 cmd 不匹配 - 但它在文件脚本中匹配。为什么?
【问题讨论】:
-
您正在逐行读取文件,因此无法匹配多行,因为
$_一次只能包含一行。而是将文件读入一个字符串,或逐段读取 -
所以我可以简单地将
undef放在$/的开头,并通过空格分隔的所有单词进行正则表达式? -
你所说的是什么意思?"将通过所有单词进行正则表达式..."?
-
你也可以像这样运行你的脚本
perl -0777 -nle .... -
我的意思是,如果
$/是undef,$_不再是一行?或者我怎样才能在$_中删除文件,这样我就可以匹配我尝试过的正则表达式?