正则表达式 – 带括号的匹配作为数组(Perl)
发布时间:2020-12-14 05:36:27 所属栏目:百科 来源:网络整理
导读:我似乎记得有一种方法可以访问Perl中的正则表达式的括号匹配(即$1,$2,$3等)作为数组,但现在我似乎无法找到它. @和@都不是我的意思. 编辑: 我应该补充一点,我想在s ///(替换)中访问这个数组,如下所示: s/(foo)(bar)+(baz)/mySubst(@!)/e; (如果@!是我正在
我似乎记得有一种方法可以访问Perl中的正则表达式的括号匹配(即$1,$2,$3等)作为数组,但现在我似乎无法找到它. @和@都不是我的意思.
编辑: 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,$3 vars. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |