2010-12-08 2 views
1

У меня есть список слов, которые отображаются в следующем формате [bmw, 32] [cadillac, 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

\[(.*?)\]

Non-жадные соответствия даст вам два маркеров. Это также предполагает, что нет квадратных скобок в токенах, которые вы соответствуете.

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 
Смежные вопросы