正则表达式删除驱动器号和&用空格替换正斜杠

时间:2014-01-06 14:48:42

标签: regex perl

我正在尝试编写Perl Regex替换模式,该模式执行以下操作:

输入:C:/images/sample folder/any_sub-folder01/
输出:images sample folder any_sub-folder01

所以它应该修剪驱动器号用空格替换任何正斜杠。 路径可以包含在Windows路径中有效的任何字符。

可能这是一个非常简单的模式,但我不是很擅长正则表达式.. 需要Perl正则表达式在ExifTool中使用 - 任何帮助将不胜感激

4 个答案:

答案 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