我在正则表达式中创建了两个命名的捕获变量,第二个似乎没有返回任何值,而第一个可以。我不知道为什么......代码是什么。
my $string = 'test [google] another test [windows]';
my $regex=qr/\w*\[{1}(?<firstBracket>\w+)\]{1}(?<secondBracket>\w*)/ip;
$string=~ /$regex/;
say $+{secondBracket};
我期待&#34; secondBracket&#34;将返回。
我可以做$+{firstBracket}
,但不能做第二个......有人可以帮忙吗?
感谢。
答案 0 :(得分:3)
你可能意味着:
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 ) {
...
}
具有相同的输出......