本文介绍了Perl 命名捕获组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在正则表达式中创建了两个命名的捕获变量,第二个似乎没有返回任何值,而第一个可以.我不知道为什么..这是代码.
I have created two named capture variables in the regex and the second one doesn't seem to return any value while the first one can. I am not sure why..here is the code.
my $string = 'test [google] another test [windows]';
my $regex=qr/\w*\[{1}(?<firstBracket>\w+)\]{1}(?<secondBracket>\w*)/ip;
$string=~ /$regex/;
say $+{secondBracket};
我期待secondBracket"会回来.我可以做 $+{firstBracket}
,但不能做第二个...有人可以帮忙吗?
I am expecting that "secondBracket" will return.I can do $+{firstBracket}
, but not the second one...Can someone help please?
谢谢.
推荐答案
你可能的意思是:
my $string = 'test [google] another test [windows]';
if( $string =~ /.*?\[(?<firstBracket>\w+)\].*?\[(?<secondBracket>\w+)\]/i ) {
say $+{firstBracket};
say $+{secondBracket};
}
输出
google
windows
或
my $re = qr/.*?\[(?<firstBracket>\w+)\].*?\[(?<secondBracket>\w+)\]/i;
if( $string =~ $re ) {
...
}
具有相同的输出...
这篇关于Perl 命名捕获组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!