Ana*_*hah 1 regex string perl replace
嗨,
我有一个看起来像的字符串
/dir/dir1/filename.txt
Run Code Online (Sandbox Code Playgroud)
我想用一些其他名称替换"filename.txt",使"/ dir/dir1"保持原样,所以在替换字符串之后会看起来像
/dir/dir1/newfilename.txt
Run Code Online (Sandbox Code Playgroud)
考虑到我不知道"filename"的值,我怎么能在Perl中使用RegExp呢?
非常感谢
PS:"filename.txt"和"newfilename.txt"用于在询问原始文件名不同的问题时使事情变得简单.
Ya.*_*man 11
我建议不要使用正则表达式来摆弄文件名/路径.目录分隔符,有效/无效字符因平台而异,可能是一个需要解决的问题.我建议你尝试File :: Spec来提取文件名,然后用你想要的任何东西替换它
nxa*_*adm 10
正则表达式是您的问题的错误工具.正则表达式很棒,大部分时间都在工作,但并不总是最干净(可读性)或最快的解决方案.
我建议使用经典的File :: Basename.与File :: Spec相比,File :: Basename是一个核心模块(无需安装!),并且非常易于使用:
use File::Basename;
my $basename = basename($fullname,@suffixlist);
my $dirname = dirname($fullname);
Run Code Online (Sandbox Code Playgroud)
我最喜欢的用途:
my $filename = basename($path);
Run Code Online (Sandbox Code Playgroud)
$filename =~ s%/[^/]*$%/newfilename.txt%;
Run Code Online (Sandbox Code Playgroud)
s%...%...%- %用作分隔符,因此您可以/在模式中使用/ - 匹配斜线[^/]* - 以及任何不包含斜杠的字符串$ - 直到字符串的结尾| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |