Perl中的模式匹配和正则表达式

时间:2010-12-08 00:04:41

标签: regex perl

我有一个单词列表,以下列格式显示[bmw,32] [cadillac,64]。如何在Perl脚本中使用正则表达式来提取每组括号之间的内容,以便我可以以我想要的格式打印出来?我也对使用命令行实用程序这个解决方案感兴趣,但对Perl更是如此,因为我对它感到满意。

3 个答案:

答案 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;
相关问题