kk.*_*kk. 2 regex perl multiline
我是perl的初学者.我有一个文本文件,文本类似于下面.我需要提取VALUE ="< NEEDED VALUE >".说对于SPINACH,我应该单独使用SALAD.
如何使用perl正则表达式获取值.我需要解析多行来获取它.即每个#ifonly --- #endifonly之间
$ cat check.txt
while (<$file>)
{
if (m/#ifonly .+ SPINACH .+ VALUE=(")([\w]*)(") .+ #endifonly/g)
{
my $chosen = $2;
}
}
Run Code Online (Sandbox Code Playgroud)
#ifonly APPLE CARROT SPINACH
VALUE="SALAD" REQUIRED="yes"
QW RETEWRT OIOUR
#endifonly
#ifonly APPLE MANGO ORANGE CARROT
VALUE="JUICE" REQUIRED="yes"
as df fg
#endifonly
Run Code Online (Sandbox Code Playgroud)
use strict;
use warnings;
use 5.010;
while (<DATA>) {
my $rc = /#ifonly .+ SPINACH/ .. (my ($value) = /VALUE="([^"]*)"/);
next unless $rc =~ /E0$/;
say $value;
}
__DATA__
#ifonly APPLE CARROT SPINACH
VALUE="SALAD" REQUIRED="yes"
QW RETEWRT OIOUR
#endifonly
#ifonly APPLE MANGO ORANGE CARROT
VALUE="JUICE" REQUIRED="yes"
as df fg
#endifonly
Run Code Online (Sandbox Code Playgroud)
这使用了brian d foy 在这里描述的一个小技巧.如链接所述,它使用标量范围运算符/触发器.