Regex移除驱动器号&;用空格替换前斜杠
我正在尝试编写一个Perl正则表达式替换模式,它执行以下操作: 输入:Regex移除驱动器号&;用空格替换前斜杠,regex,perl,Regex,Perl,我正在尝试编写一个Perl正则表达式替换模式,它执行以下操作: 输入:C:/images/sample文件夹/any_子文件夹01/ 输出:images示例文件夹any_子文件夹01 因此,它应该修剪驱动器号,并将任何正斜杠替换为空白。 路径可以包含在Windows路径中有效的任何字符 可能这是一个非常简单的模式,但我不太擅长正则表达式。。 需要使用Perl正则表达式才能在ExifTool中使用-如需任何帮助,将不胜感激删除驱动器号: 转换/到空间: 是否要切断前导“/”?将此正则表达式用作第一
C:/images/sample文件夹/any_子文件夹01/
输出:
images示例文件夹any_子文件夹01
因此,它应该修剪驱动器号,并将任何正斜杠替换为空白。
路径可以包含在Windows路径中有效的任何字符
可能这是一个非常简单的模式,但我不太擅长正则表达式。。
需要使用Perl正则表达式才能在ExifTool中使用-如需任何帮助,将不胜感激删除驱动器号:
转换/到空间:
是否要切断前导“/”?将此正则表达式用作第一个正则表达式:
s/^\w\:\///;
从RegexPlanet粘贴: 正则表达式:
(C:)?\/
选项:g
Perl正则表达式对象:qr/(C:)?\/
Perl变量:(C:)?\/
现在,您所要做的就是修剪前导和尾随的空白。您可以使用模块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
这将处理所有卷(
\\foo\bar
),而不仅仅是驱动器(c:\
)。谢谢!有没有办法将这两个替换运算符合并到一个正则表达式中?@Gino,没有,没有办法将替换运算符合并到一个正则表达式中……如果两个替换运算符都被替换为同一个对象,你可以将这两个替换运算符合并到一个正则表达式中。你应该公布你试图帮助人们解决问题的内容。不过看起来不错,我想这不是一个选项。需要正则表达式作为ExifTool的输入,以便将路径作为单独的字插入某些图像的IPTC标题中。exiftool”-iptc:标题摘要
s/^\w\:\///;
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
use Path::Class qw( file );
my @components = file($path)->components();
shift(@components);
my $display = join(' ', @components);