perl脚本不提取唯一路径(正则表达式)

时间:2018-03-08 13:33:02

标签: regex perl

我有这个正则表达式

($oldpath = $_) =~ m/^\/(.+\/)*/;

这是输入:

/cd-lib/mp3/rock/LittleFeat/Dixie_Chicken/110-lafayette_railroad.mp3

但输出是:

/cd-lib/mp3/rock/LittleFeat/Dixie_Chicken/110-lafayette_railroad.mp3

应该是:

/cd-lib/mp3/rock/LittleFeat/Dixie_Chicken/

提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

“输出”是什么意思? $1包含

cd-lib/mp3/rock/LittleFeat/Dixie_Chicken/

这几乎是你想要的(它只是错过了领先的/)。

您已将$_分配给$oldpath,而不是将其与正则表达式进行匹配。它不会更改$_$oldpath

规范方式是

my ($match) = m/^\/(.+\/)*/;
或者更确切地说(以防止倾斜的牙签综合征)

my ($match) = m{^/(.+/)*};

即。在列表上下文中运行匹配返回匹配的捕获组,第一个被绑定到$ match。