我有一个单词列表,以下列格式显示[bmw,32] [cadillac,64]。如何在Perl脚本中使用正则表达式来提取每组括号之间的内容,以便我可以以我想要的格式打印出来?我也对使用命令行实用程序这个解决方案感兴趣,但对Perl更是如此,因为我对它感到满意。
答案 0 :(得分:3)
$_ = "[bmw,32][cadillac,64][audi,144][toyata,6]";
%car = m{ \s* \[ ( \pL+ ) , ( \pN+ ) \] \s* }gx;
printf "%-10s => %3d\n", $_ => $car{$_} for sort keys %car;
__END__
audi => 144
bmw => 32
cadillac => 64
toyata => 6
答案 1 :(得分:0)
\[(.*?)\]
非贪婪的匹配会给你两个代币。这也假设你匹配的标记中没有方括号。
答案 2 :(得分:-1)
my $s = "[bmw,32][cadillac,64]"; $s =~ /\[(.*)\]\[(.*)\]/; print $1; print $2;