Regex 如何使用正则表达式从文件中提取行并在perl中推送到变量/数组

Regex 如何使用正则表达式从文件中提取行并在perl中推送到变量/数组,regex,perl,Regex,Perl,我正在寻找帮助,以提取特定的行有“开始”和“结束”关键字和 输入文件: adfafaf adfafafas adfafaf Detail=Process Start Time : TIMESTAMP '2014-02-14 01:20:58.918757' AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD End Time : TIMESTAMP '2014-02-14 01:21:49.520818' adffffffff adf

我正在寻找帮助,以提取特定的行有“开始”和“结束”关键字和 输入文件:

adfafaf
adfafafas
adfafaf
Detail=Process Start Time   : TIMESTAMP '2014-02-14 01:20:58.918757'
AAAAAAAA
BBBBBBBB
CCCCCCCC
DDDDDDDD
End Time                    : TIMESTAMP '2014-02-14 01:21:49.520818'
adffffffff
adfffff
adfff
期望输出: 移动到字符串/数组时需要以下行

Detail=Process Start Time   : TIMESTAMP '2014-02-14 01:20:58.918757'
AAAAAAAA
BBBBBBBB
CCCCCCCC
DDDDDDDD
End Time                    : TIMESTAMP '2014-02-14 01:21:49.520818'
这是你的台词

if ($subject =~ m/^[^\n]*?Start.*?End[^\n]+/sm) {$result = $&;}

它是点全部模式,因此
*
可以在多行上匹配。要在最后一行结束时停止,我们使用匹配除换行符以外的所有字符的
[^\n]+

只需逐行迭代文件,当一行匹配时,将其推送到数组中(或者使用它执行任何操作)?大约需要5行代码
@array=eval('sub{grep/Start/。/End/,@}')->(
另请参见@ysth,这与
@array=grep/Start/。/End/,
有什么不同?@ikegami:如果您只运行一次,或者从来没有一个开始没有您想要的结束
[^\n]
而不是第一个
(或在任何地方使用
,但在中间使用
(?s:.*)