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 " ;
}
它不起作用
答案 0 :(得分:1)
这是一个略有不同的版本(虽然与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
你的第一个角色类里面有一个+
;我怀疑它可能是一个量词,而不是'+'字符。因此,我删除了它,因为你不能在字符类中使用量词,但是,当然,我可能完全误读了你的意图。
此外,我摆脱了(.*)
位 - 如果你知道你想要匹配的话,最好尽可能具体。
答案 1 :(得分:0)
尝试使用:
my $aad='perl-Class-Std-Utils-0.0.3-1.el4.rf';
if ( $aad =~ /^([\w+-]+)-([\d.-]+)\.(.*)/) {
print " $1 = $2 = $3 " ;
}
<强>输出:强>
perl-Class-Std-Utils = 0.0.3-1 = el4.rf