任意のrpmで2番目の最後のハイフンの前にすべてを抽出しようとしています。私はインデックス番号を指定してこの作業を行っていますが、これは異なる数のハイフンを持つ文字列では機能しません。私はリリースが最後のハイフンの後にあることを知っています、バージョンは2番目の最後のハイフンの後にあり、その名前はその前のすべてです。 perlでどうすればいいですか?Perlで2番目の最後のハイフンの前にすべてを抽出します
my $str = "rpm-python-4.8.0-55";
my $name = join '-', (split /-/, $str)[-4 .. -3];
my $version = (split /-/, $str)[-2];
my $release = (split /-/, $str)[-1];
print "Name: $name\n";
print "Version: $version\n";
print "Release: $release\n";
出力:
Name: rpm-python
Version: 4.8.0
Release: 55
おかげで@zdim!正規表現の1つのライナーは勝者です –
@MikeAありがとう - 正規表現は本当にいいですね。 "one-liner"が宇宙の半分をエンコードしようとする3行の悪夢に変わるまで: – zdim