使用perl

时间:2017-03-22 09:04:33

标签: perl

我无法提取文件名中的最后一个数字,并重命名文件,将数字放在文件的开头。 就像假设我的文件名是"Gen_TCC_TIF_2110_413010_L3TL_Ae6TL707285_371925.out" 我想将文件重命名为"371925_Gen_TCC_TIF_2110_413010_L3TL_Ae6TL707285.out"

my $newFileName ='Gen_TCC_TIF_2110_413010_L3TL_Ae6TL707285_371925.out';
my ($digits) = $newFileName =~ /(\d+)/g;
my $newFileName_2="${digits}_Gen_TCC_TIF_2110_413010_L3TL_Ae6TL707285_371925.out"

3 个答案:

答案 0 :(得分:0)

尝试:

 $newFileName =~ /(\d+)\.out/;
my $digits = $1;
my $newFileName_2=$digits."_Gen_TCC_TIF_2110_413010_L3TL_Ae6TL707285_371925.out";

(\d+)\.out/应该在.out

之前为您提供所有数字

答案 1 :(得分:0)

试试这个:

$newFileName =~ s/(.*?)_(\d+)\.out/$2_$1\.out/;

$newFileName =~ s/(.*?)_(\d+)(\.\w+)/$2_$1$3/;

答案 2 :(得分:-1)

您可以使用单个正则表达式执行此操作:

my ($digits) = $newFileName =~ /_(\d+)\.out/;

或者如果你想获得数字(因为你需要其他东西),那么你可以这样做:

/g

您正在使用2110修饰符,这使您的正则表达式匹配所有数字块,这不是您想要的。 (甚至最糟糕的是,它返回了一个数组,但你只保留了标量$digit中的第一个元素({{1}})