我对这个主题有一些疑问:
How can I print lines after a regex match in Perl?
我正在使用源代码并将regex从数据修改为(F)。
但是当我跑步的时候,那些有F的线路也会被拿起来。虽然我已经将正则表达式更改为(F)。任何人都可以帮我吗?
这是我的数据(输入文件):
Device#1
00 000 000 000 1 > beta (F)
Device#2
00 000 000 1 000 > beta (F)
Fail
Device#3
00 000 1 000 000 > beta (F)
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
我正在使用的代码是:
my $directory = 'C:\Users\Try';
my $motif = '(F)';
parse($motif);
sub parse{
my ($x) = (@_); #$x=(F)
print "$x\n";
while(<INPUT>)
{
if($_ =~ />*($x)/)
{
print $_."\n";
$printable = 1;
}
else
{
# print "ELSE\n";
}
# print "FINISH 1 loop\n";
}
}
我希望得到的结果:
00 000 000 000 1 > beta (F)
00 000 000 1 000 > beta (F)
00 000 1 000 000 > beta (F)
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
我得到的当前输出如下:
00 000 000 000 1 > beta (F)
00 000 000 1 000 > beta (F)
00 000 1 000 000 > beta (F)
Fail
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
答案 0 :(得分:0)
变化:
if($_ =~ />*($x)/)
到
if($_ =~ />+.*($x)/)
因此,您只能在一行中使用>
和(F)
说明:
>* mean zero or more `>` so also lines with only a F will be matched (parentheses are Special character in regex)
>+.* means one or more `>` and after that can be Zero or more character.
答案 1 :(得分:0)