我无法提取文件名中的最后一个数字,并重命名文件,将数字放在文件的开头。
就像假设我的文件名是"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"
答案 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}})