【发布时间】:2015-06-10 04:55:55
【问题描述】:
我阅读了有关在 Perl 5 中使用多行正则表达式的手册,但仍然无法弄清楚为什么以下内容不能按预期工作:
#!/usr/bin/perl
use v5.20;
my $s = <<'ENDSTR';
aaa : AAA
bbb : BBB
ccc : CCC
ENDSTR
my $m = 'bbb';
my $a = $s =~ s/.*^$m *: (.*?)$.*/$1/rsm;
my $b = $s =~ s/[.\n]*?^$m *: (.*)$[.\n]*/$1/rm;
print "a: $a\n";
print "b: $b\n";
程序的预期输出是
a: BBB
b: BBB
但是这些正则表达式会产生:
a: BBB
ccc : CCC
b: aaa : AAA
bbb : BBB
ccc : CCC
如何更正这些正则表达式以获得所需的匹配?
【问题讨论】: