我有这个正则表达式
($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/
提前致谢。 :)
答案 0 :(得分:1)
“输出”是什么意思? $1
包含
cd-lib/mp3/rock/LittleFeat/Dixie_Chicken/
这几乎是你想要的(它只是错过了领先的/
)。
您已将$_
分配给$oldpath
,而不是将其与正则表达式进行匹配。它不会更改$_
或$oldpath
。
规范方式是
my ($match) = m/^\/(.+\/)*/;
或者更确切地说(以防止倾斜的牙签综合征)
my ($match) = m{^/(.+/)*};
即。在列表上下文中运行匹配返回匹配的捕获组,第一个被绑定到$ match。