Regex Perl正则表达式:匹配除某个子文件夹模式之外的所有文件夹
给定以下文件夹名称:Regex Perl正则表达式:匹配除某个子文件夹模式之外的所有文件夹,regex,perl,Regex,Perl,给定以下文件夹名称: locales/DE/en locales/FR/en locales/US/en locales/US/fr public test [...] 我想匹配除前两种模式以外的所有模式。根目录中还有其他文件夹,而locales文件夹中也有其他子文件夹。我真的想排除locales/*中的所有内容,除了locales/US 这适用于地区,但无法包括其他根文件夹。 /(地区)\/(美国)/ 有什么想法吗?要匹配除地区/US以外的任何内容,您可以使用负前瞻: /^(?!lo
locales/DE/en
locales/FR/en
locales/US/en
locales/US/fr
public
test
[...]
我想匹配除前两种模式以外的所有模式。根目录中还有其他文件夹,而locales
文件夹中也有其他子文件夹。我真的想排除locales/*
中的所有内容,除了locales/US
这适用于地区
,但无法包括其他根文件夹。/(地区)\/(美国)/
有什么想法吗?要匹配除
地区/US
以外的任何内容,您可以使用负前瞻:
/^(?!locales\/US).*/m
要匹配除
地区/US
之外的任何内容,您可以使用负前瞻:
/^(?!locales\/US).*/m
您可以使用两个正则表达式,而不是将其混乱在一个正则表达式中。以下是一个尝试:
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";
}
您可以使用两个正则表达式,而不是将其混乱在一个正则表达式中。以下是一个尝试:
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";
}
如果您允许所有内容,请使用
^.*$
并在开始时使用禁止区域设置/(?:DE | FR)
的先行限制:。如果您允许所有内容,请使用^.*$
并使用禁止区域设置/(?:DE | FR)的先行限制
开头:。我相信他想跳过区域设置中的每个文件,即locales/*
除了locale/US
。基于这一行,这对区域设置有效,但没有包括其他根文件夹。我认为OP想排除locales/US
只有他的正则表达式对locales
有效,所以他说的是公众,test
和其他根文件夹一样。我相信他想跳过locale中的每个文件,即locales/*
除了locale/US
。基于这行问题这对locale有效,但不包括其他根文件夹。
我认为OP想排除locales/US
只有他的正则表达式对locales
,因此他将public
,test
作为其他根文件夹来讨论。这很好,但正则表达式的要点是删除冗长。您希望定义一个规则并在一行中应用它。这很好,但正则表达式的要点是消除冗长。您希望定义一条规则并在一行中应用它。