是否存在以下更简洁/完善的方法:

my @components = split /-/, $original;
my $final_string = $components[0]."-".$components[1];

输入是一个最多包含2个-的字符串,最后一个是可选的。我一直想保留第一部分。即10-9-1应该变成10-910-9,因为输入应该仍然是10-9

最佳答案

use Modern::Perl;

my $re = qr/-\d+\K.*$/;
while(<DATA>) {
    chomp;
    s/$re//;
    say;
}
__DATA__
10-9-1
10-9

仅需一个字符串:
my $original = '10-9-1';
(my $final = $original) =~ s/-\d+\K.*$//;
say $final;

移居:
s/
    -       # find the first dash in the string
    \d+     # 1 or more digits
    \K      # forget all we have seen until this posiiton
    .*      # rest of the line
    $       # end of line
//

10-01 19:00
查看更多