2010-12-08 6 views
1

J'ai une liste de mots qui apparaissent dans le format suivant [bmw, 32] [cadillac, 64]. Comment est-ce que j'utilise regex dans un script Perl pour extraire le contenu entre chaque ensemble de parenthèses afin que je puisse les imprimer dans le format que je veux? Je suis également intéressé par les utilitaires de ligne de commande pour cette solution, mais plus encore avec Perl, car je suis à l'aise avec elle.Motif de correspondance et Regex en Perl

Répondre

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

Que faire s'il peut y avoir un nombre variable de parenthèses? – syker

+0

L'avez vous essayé? Votre regex ne va pas beaucoup. – jira

+0

correspondance gourmande va retourner 'bmw, 32] [cadillac, 64', pas les deux jetons désirés – masher

0

\[(.*?)\]

non gourmand correspondant vous donnera vos deux jetons. Cela suppose également qu'il n'y a pas de crochets dans les jetons que vous apportez.

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 
Questions connexes