如何从perl中的regex中获取所有单独的匹配项



我有这个:

my %names = qw (hanibal lecter Harry Potter INDIANA JONES Sarah connor scarlet O'Hara JAMES Bond);

或者这个:

my $scalar_string = "hanibal lecter Harry Potter INDIANA JONES Sarah connor scarlet O'Hara JAMES Bond";

如何让所有的名字和姓氏都使用/[w']+ [w']+/

如果您从哈希开始,只需使用键和值来提取名字和姓氏。要从字符串中提取名称,只需添加捕获组和/g即可找到所有匹配项:

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my %names = qw (hanibal lecter Harry Potter INDIANA JONES Sarah connor scarlet O'Hara JAMES Bond);
say join ' ', 'First names:', keys %names;
say join ' ', 'Last names:', values %names;
my $scalar_string = "hanibal lecter Harry Potter INDIANA JONES Sarah connor scarlet O'Hara JAMES Bond";
my (@first_names, @last_names);
while ($scalar_string =~ /([w']+) ([w']+)/g) {
push @first_names, $1;
push @last_names, $2;
}
say join ' ', 'First names:', @first_names;
say join ' ', 'Last names:', @last_names;

最新更新