1

我需要一种最佳方式来匹配具有大量可能的基本路径(可能是许多目录级别)的路径。基本路径本身可能是有效的 shell 全局路径

例如

我需要匹配下面列表中的路径/a/b-12/c/d/e/fg/hi/94.txt

  1. /a/b-*/e
  2. /x/y*
  3. /x/{a,b,s*}e
  4. /a/{a,b*,c}2/c/d
  5. /a/b*/c/e
  6. ...

这个列表很长,有 10Ks 这样的路径。一旦我们确定了可能的父路径,我可以通过 chdir/cd 到路径等来验证它们。

我希望在列表中进行正则表达式匹配,但我很难匹配 shell 全局路径。是否有 Perl 模块可以帮助我。

谢谢!

4

1 回答 1

1

您可能想Text::Glob从 CPAN 尝试。你不必使用glob_to_regex,我只是在玩它,但这匹配:

#!/usr/bin/env perl
use strict;
use warnings;
use Text::Glob qw(glob_to_regex);

my @arr = ('/a/b-12/c/d/e/fg/hi/94.txt');

my $regex = glob_to_regex('/a/{a,b*,c}2/c/d/e/fg/hi/94.txt');
print "REGEX: $regex\n";
if ($arr[0] =~ m/$regex/) {
  print "Matches\n";
}
于 2012-09-15T09:03:48.237 回答