Как получить все индивидуальные совпадения из регулярного выражения в Perl? - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть это:

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']+/?

1 Ответ

0 голосов
/ 25 ноября 2018

Если вы начинаете с хэша, просто используйте ключи и значения , чтобы извлечь имена и фамилии.Чтобы извлечь имена из строки, просто добавьте группы захвата и /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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...