我如何做一个Perl正则表达式来匹配反斜杠之后和某个文件扩展名之前的所有内容?

“..目录[文件名].xml”

我将如何编写与包含引号的上述字符串匹配的正则表达式?我如何匹配 .xml?

到目前为止,我有以下内容。不知道在这之后如何继续,我对 Perl 很陌生。

$content =~ m/"..directory/

谢谢!

回答

方法 1(使用正则表达式)

#!/usr/bin/perl
use strict;
use warnings;
my $path = "..directorysomefile.xml";

if(my ($before) = $path =~ m{^(.*).xml$}) {
    print "[$before] match!n";
} else {
    print "no match!n";
};

输出:

[..directorysomefile] match!

方法 2(使用File::Spec::Win32)

该方法利用每个 Perl 发行版附带的内置模块 File::Spec。

这可能比第一种方法更好,因为它是处理路径的专用模块。

内置模块File::Basename也值得一看。

#!/usr/bin/perl
use strict;
use warnings;
use File::Spec::Win32;

my $path = "..directorysomefile.xml";
my ($volume,$directories,$file) = File::Spec::Win32->splitpath($path);

print "vol=$volumen";
print "dirs=$directoriesn";
print "file=$filen";

输出:

vol=
dirs=..directory
file=somefile.xml


以上是我如何做一个Perl正则表达式来匹配反斜杠之后和某个文件扩展名之前的所有内容?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>