2010-12-08 42 views
1

我有出現在以下格式[寶馬,32]字的列表【凱迪,64]。如何在Perl腳本中使用正則表達式來提取每組括號之間的內容,以便我可以按照我想要的格式打印它們?我也對這個解決方案使用命令行實用程序感興趣,但對於Perl來說,我更感興趣,因爲我對此感到滿意。模式匹配正則表達式和在Perl

回答

-1
 
my $s = "[bmw,32][cadillac,64]"; 
$s =~ /\[(.*)\]\[(.*)\]/; 
print $1; 
print $2; 
+0

如果可以有可變數目的括號會怎樣? – syker 2010-12-08 00:11:15

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