用于使用';重命名多个文件的regexp;重命名为.pl';
我正在使用重命名多个文件。我很难找到正确的regexp。我的文件名的格式如下: nn.some.title.string.ext 我只想把第一个“.”改为“-”。我原以为这样行得通,但事实并非如此用于使用';重命名多个文件的regexp;重命名为.pl';,regex,linux,perl,rename,Regex,Linux,Perl,Rename,我正在使用重命名多个文件。我很难找到正确的regexp。我的文件名的格式如下: nn.some.title.string.ext 我只想把第一个“.”改为“-”。我原以为这样行得通,但事实并非如此 s/\.?/ - / 有人能帮我解决这个问题吗?TIA.对于简单的正则表达式模式,只需尝试一下 my $str = "nn.some.title.string.ext"; $str=~s/^([^\.]*)\./$1-/i; or $str=~s/\./-/; #^([^\.]*)
s/\.?/ - /
有人能帮我解决这个问题吗?TIA.对于简单的正则表达式模式,只需尝试一下
my $str = "nn.some.title.string.ext";
$str=~s/^([^\.]*)\./$1-/i;
or
$str=~s/\./-/;
#^([^\.]*) Starting point upto the first dot
print $str;
也许你会想确保第一点不是最后一点。我的意思是,如果您有nn_some_title_string.ext文件名,脚本将不会更改最后一个点
$fileName = "nn.some.title.string.ext";
$fileName =~s/\.(?=\w+\.\w+)/-/;
print "FileName: " . $fileName ."\n";
\.?
可以匹配零字符序列,因此s/\.?/-/
将替换输入开头的点或空字符串
"abc.def.ghi" ⇒ " - abc.def.ghi"
".abc" ⇒ " - abc"
要更换第一个
,可以使用以下方法:
s/\./ - /
s/(?!^)\.(?!\w+\z)/ - /g
要替换所有的
,但要替换前导的或扩展中的,可以使用以下命令:
s/\./ - /
s/(?!^)\.(?!\w+\z)/ - /g
为什么要使用
?
量词?它使模式成为可选的。移除它s/\./-/
应该可以用。s/([^\.]*)\./$1-/
试试看。s/\./-/
没有预期的效果?@WtRiker:你为什么需要团队和反向引用?如果您不使用/g
修饰符,您只能在输入中找到一个匹配项。请不要使用该程序。它是业余代码,使用eval
不适当且不必要。我想你需要/I
修饰符,以防遇到小写句号?哈哈哈。。。我只是从上一行复制了正则表达式。谢谢