Regex 正则表达式:如何在Perl中删除文件名之间的额外空格

Regex 正则表达式:如何在Perl中删除文件名之间的额外空格,regex,perl,filenames,Regex,Perl,Filenames,如何在Perl中删除文件名之间的额外空格 前导空格和尾随空格可以通过regex$line=~s/^\s+|\s+$//x 这就是我的代码的样子: use File::Find; find (\&wanted, '.'); sub wanted { my $file = $File::Find::name; $file =~ s/\$//g; print "**file = $file\n"; } $file可以是: My File.jpg myfile$ $my

如何在Perl中删除文件名之间的额外空格

前导空格和尾随空格可以通过regex$line=~s/^\s+|\s+$//x

这就是我的代码的样子:

use File::Find;
find (\&wanted, '.');
sub wanted {
    my $file = $File::Find::name;
    $file =~ s/\$//g;
    print "**file = $file\n";
}
$file
可以是:

My File.jpg
myfile$
$myfile
my$file

要从我的文件名中删除
$
,我正在使用
$file=~s/\$//g这也适用于空格吗?

在字符串中间的多个空间块,你可以做的是用ReEX为空间块拆分字符串,然后使用<代码>分裂(/s+//$ data)< /> >和<代码>连接(“,”,list)< /Cult>函数在per../p>中加入完整的STATE。 正如@TLP所指出的,这里是仅使用正则表达式更新的代码:

$str =~ s/\s+/ /g;

将删除连续的空白字符,并用单个空格替换它们。

替换运算符s///可以很好地处理字符串。谢谢Shubhanshu,但我的目的是只处理文件名并对其进行一些处理。我想从文件名中删除空格,如“My File.jpg”或“My Data.png”,当你说“在文件名之间”时,你的意思是“在文件名内部”吗?这就是我的代码看起来的样子使用File::Find;查找(\&通缉,'.');需要子文件{my$file=$file::Find::name;$file=~s/\$//g;print“**file=$file\n”}我的文件名类似于“my file.jpg”或“myfile$”或$myfile”或“my$file”“为了从我的文件名中删除$,我使用$file=~s/\$//g;这是否也适用于空格??对于从文件名中删除$,我使用的是$file=~s/\$//g;这也适用于空间吗?是的,为什么不适用?虽然你打算用这样一份清单做什么,但我不知道。听起来你的尝试是错误的。我必须删除文件名中的所有空格和$occurrence,例如“my file.jpg”“my Pic.png”“Myfolder$”“mytest$”
$file =~ s/\s+/ /g;