Perl修剪路径正则表达式



所以我要修剪一个路径,看起来像这样:

E:folder0000000file.txt

我想替换这个:

E:folder

我想不出这个正则表达式。

我之前确实问过这个问题,但是得到了混淆的顺序。

使用regex操作路径很糟糕。

use Path::Class::File qw();
my $path = Path::Class::File->new_foreign('Win32', 'E:\folder\00000000\file.txt');
# E:folder0000000file.txt
my $base = $path->parent->parent;
# E:folder

假设变量驱动器名称和文件夹只有下划线/连字符:

/^[A-Z]:\(w|_|-)+\/

将匹配E:folder

使用此正则表达式^(.*[\/])([^\/]+[\/][^\/]+)$

$1等于E:folder, $2等于00000000file.txt

use Path::Class qw( file dir );
my $file      = file('E:\folder\00000000\file.txt');
my $orig_base = dir('E:\folder');
my $new_base  = dir('F:\directory');
# F:directory0000000file.txt
say $file->relative($orig_base)->absolute($new_base);

最新更新