我正在尝试编写Perl Regex替换模式,该模式执行以下操作:
输入:C:/images/sample folder/any_sub-folder01/
输出:images sample folder any_sub-folder01
所以它应该修剪驱动器号并用空格替换任何正斜杠。 路径可以包含在Windows路径中有效的任何字符。
可能这是一个非常简单的模式,但我不是很擅长正则表达式.. 需要Perl正则表达式在ExifTool中使用 - 任何帮助将不胜感激
答案 0 :(得分:2)
use Path::Class qw( file );
my @components = file($path)->components();
shift(@components);
my $display = join(' ', @components);
这会处理所有卷(\\foo\bar
),而不仅仅是驱动器(c:\
)。
答案 1 :(得分:0)
s/^\w\://;
s/\// /g;
你想切断领先的“/”吗?使用此RegEx作为第一个:
s/^\w\:\///;
答案 2 :(得分:0)
从RegexPlanet粘贴:
正则表达式:(C:)?\/
选项:g
Perl正则表达式对象:qr/(C:)?\//
Perl变量:(C:)?\/
现在你所要做的就是修剪前导和尾随空格。
答案 3 :(得分:0)
你可以通过模块Parse :: Path来解析文件路径和名称:
use v5.10;
use Parse::Path;
my $path = Parse::Path->new(
path => 'C:\WINDOWS\SYSTEM32',
style => 'File::Win32',
);
say $path->as_string;
$path->push($path, 'DRIVERS');
say $path->as_string;
$path->volume('D');
say $path->as_string;
my $volume = $path->volume;
$path->volume('Z');
$path->volume(''); # removes the volume