gpt4 book ai didi

regex - 括号匹配作为数组 (Perl)

转载 作者:行者123 更新时间:2023-12-01 09:54:38 29 4
gpt4 key购买 nike

我似乎记得有一种方法可以访问 Perl 中正则表达式的括号匹配项(即 $1$2$3、等)作为一个数组,但现在我似乎无法找到它。 @+@- 都不是我的意思。

编辑:我应该补充一点,我想在 s///(替换)中访问这个数组,如下所示:

s/(foo)(bar)+(baz)/mySubst(@!)/e;

(如果 @! 是我正在寻找的数组)

最佳答案

我不知道有一个内置的魔术数组可以保存所有带括号的组,但这并不能阻止你制作一个:

{package Match::Parens;
sub TIEARRAY {bless []}
sub FETCH {no strict 'refs'; ${$_[1] + 1}}
sub FETCHSIZE {$#+}
tie @!, __PACKAGE__;
}

sub mySubst {join ', ' => map ucfirst, @_}

my $str = 'foobarbarbaz';

$str =~ s/(foo)(bar)+(baz)/mySubst(@!)/e;

say $str; # prints 'Foo, Bar, Baz'

这里我们声明 Match::Parens 将是带领带的 @! 数组的新实现。每次访问它时,它都会在该索引处查找当前匹配的括号。当前的实现像数组一样从 0 开始,您可能想将它更改为从 1 开始,就像 $1, $2, $3 变量。

关于regex - 括号匹配作为数组 (Perl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257253/

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