Perl Regex:匹配除某个子文件夹模式之外的所有文件夹

时间:2016-03-02 07:47:18

标签: regex perl

鉴于这些文件夹名称:

locales/DE/en    
locales/FR/en
locales/US/en
locales/US/fr
public
test
[...]

除了前两个模式之外,我想匹配所有内容。根目录中还有其他文件夹,locales文件夹中还有其他子文件夹。我真的想要排除locales/*locales/US

之外的所有内容

这适用于locales,但未包含其他根文件夹 /(locales)\/(US)/

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

要匹配除locales/US之外的任何内容,您可以使用否定前瞻:

/^(?!locales\/US).*/m

RegEx Demo

答案 1 :(得分:1)

您可以使用两个正则表达式而不是将其混合在一起。以下是尝试:

my @folders =
  qw (locales/DE/en locales/FR/en locales/US/en locales/US/fr public test);

foreach (@folders) {
    if (/^locales/) {
        next if ( $_ !~ /^locales\/US/ ); # skip everything except locales/US
    }
    print $_,"\n";
}