gpt4 book ai didi

regex - 有没有办法在 perl 中使用数组来匹配模式?

转载 作者:行者123 更新时间:2023-12-02 02:35:04 25 4
gpt4 key购买 nike

例如,

@seed = ('seed_1', 'seed_2', 'seed_3', 'seed_4);

但是,将来可能不止seed_4。我怎样才能使它尽可能通用?这意味着我不必手动编写 future 的 seed_。它可以是“seed_50”或随机值。

示例:

$file ='text.txt';
for my $seed (@seed)
{
if (open my $data, "<", $file)
{
my $line =<$data>;
print "ERROR: $line\n";
}
close $data;
}

seed_ 实际上是目录中的文件夹。因此,我需要检查每个 seed 才能打开文本文件,但我可能不知道每个 seed 文件夹中的值。 dir 是我需要打开的目录。我只需要读出文本的第一行。

例如:

for my $dir (@dir){
for my $seed (@seed)
{
if (open my $data, "<", $file)
{
my $line =<$data>;
print "ERROR: $line\n";
}
close $data;
}
}

最佳答案

使用 quotemeta 转义数组元素中可能的非“单词”ASCII 字符,并使用 alternation 与它们构建一个模式

my $pattern = join '|', map { quotemeta } @ary;

然后在正则表达式模式中使用此$pattern

if ( $string =~ /$pattern/ ) { say $& }

查找 $string 中第一个匹配的元素(如果有),或者

while ( $string =~ /$pattern/g ) { say $& }

迭代所有匹配等。

根据详细信息,可能需要先对数组进行排序。

关于regex - 有没有办法在 perl 中使用数组来匹配模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64437404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com