如何在Perl中使用正则表达式匹配子目录路径?

Dav*_*d B 2 regex perl

我想匹配路径,/this/is/my/dir/name/anything但不是/this/is/my/dir/name/anything/anything2.换句话说,我希望在第一级匹配``/ this/is/my/dir/name /`下的所有文件和子目录,但不要匹配更低级别的任何文件和子目录.

Eug*_*ash 8

您可以使用以下dirname功能File::Basename:

dirname($path) eq '/this/is/my/dir/name' or warn "No match";
Run Code Online (Sandbox Code Playgroud)

UPD:如果您更喜欢使用正则表达式:

my $dirname = '/this/is/my/dir/name';
$path =~ m|^$dirname/[^/]+/?$| or warn "No match";
Run Code Online (Sandbox Code Playgroud)

  • @David:正则表达式不是这里最好的选择 - 编写File :: Basename是为了处理文件名解析中的杂乱边缘情况.应该没有理由不将它与其他测试结合使用. (3认同)