以下是否有更简洁/更完美的方式:
my @components = split /-/,$original; my $final_string = $components[0]."-".$components[1];
输入是一个最多2个字符串 – 最后一个是可选的.我总是希望保留第一部分.即10-9-1应该变成10-9和10-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;
Explantion:
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 //