gpt4 book ai didi

arrays - Perl next 如果正则表达式存储在数组中

转载 作者:行者123 更新时间:2023-12-01 14:38:30 25 4
gpt4 key购买 nike

我有一段代码有一个 while 循环和几个 next if 在循环中是这样的:

LOOP:
while (something) {
next if $UPUPRF =~ /^T[0-9]{6}/;
next if $UPUPRF =~ /^SECURITE.*/;
next if $UPUPRF =~ /^AUDIT[A-Z]{2}/;
}

我想将这些正则表达式放在我的配置文件(一个 perl 数据结构)中,而不是将它们“硬编码”在脚本中,以便用户只需编辑配置文件即可轻松编辑它们,并且希望您的对此的建议。

这样做最干净的方法是什么?

首先,我想我可以像这样在配置文件中存储正则表达式吗? (使用 qr//):

 ....
exclude_acct => [
qr/^T[0-9]{6}/,
qr/^AUDIT[A-Z]{2}/,
qr/^SECURITE.*/,
],
....

在我的循环中,我应该使用这样的东西吗? :

foreach (@{ $myhash{exclude_acct} }) {
next LOOP if $UPUPRF =~ /$_/;
}

感谢您的建议。

问候

注意:我还没有尝试过这段代码,只是猜测我可以那样做,但我主要想知道这是否“干净”或者是否有更干净的方法

最佳答案

这很好,但启动正则表达式引擎的成本相对较高,因此它比从多个正则表达式创建一个更快。

# Once, before the loop.
my $pat = join "|", @{ $myhash{exclude_acct} };
my $re = qr/$pat/;

# In the loop.
next LOOP if $UPUPRF =~ $re;

不过,这可能会破坏反向引用 (\1)。

关于arrays - Perl next 如果正则表达式存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60276791/

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