REGEX не работает для RPM - PullRequest
       0

REGEX не работает для RPM

0 голосов
/ 17 января 2011
perl-Class-Std-Utils-0.0.3-1.el4.rf

как извлечь значения: perl-Class-Std-Utils и 0.0.3-1

$aad='perl-Class-Std-Utils-0.0.3-1.el4.rf';

if ( $aad =~ /(^[\w+-]-(\d*)\.(.*))/{
    print " $1 = $2 = $3 " ;
}

не работает

Ответы [ 2 ]

1 голос
/ 17 января 2011

Вот немного другая версия (хотя нет большой разницы с предложением M42):

my $aad='perl-Class-Std-Utils-0.0.3-1.el4.rf';

if ($aad =~ m/^([\w-]+)-([\d.-]+)\.([\w.]+)$/) {
   print "$1 = $2 = $3\n";
}

Какие отпечатки

perl-Class-Std-Utils = 0.0.3-1 = el4.rf

У вас было + в вашем первом классе персонажей; Я подозревал, что это могло быть квантификатором, а не символом «+». Следовательно, я удалил его, так как вы не можете использовать квантификаторы в классах персонажей, но, конечно, я, возможно, неправильно понял ваши намерения.

Кроме того, я избавился от бита (.*) - лучше быть настолько конкретным, насколько это возможно, если вы знаете, что именно вы хотите сопоставить.

0 голосов
/ 17 января 2011

Попробуйте с:

my $aad='perl-Class-Std-Utils-0.0.3-1.el4.rf';

if ( $aad =~ /^([\w+-]+)-([\d.-]+)\.(.*)/) {
    print " $1 = $2 = $3 " ;
}

Ouptput:

perl-Class-Std-Utils = 0.0.3-1 = el4.rf 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...