Обратите внимание, что если вы знаете количество групп захвата, которое вам нужно на совпадение, вы можете использовать этот простой подход, который я представляю в качестве примера (из 2 групп захвата).
Предположим, у вас есть некоторые "данные", такие как
my $mess = <<'IS_YOURS';
Richard Rich
April May
Harmony Ha\rm
Winter Win
Faith Hope
William Will
Aurora Dawn
Joy
IS_YOURS
со следующим регулярным выражением
my $oven = qr'^(\w+)\h+(\w+)$'ma; # skip the /a modifier if using perl < 5.14
Я могу захватить все 12 (6 пар, , а не 8 ... Гармония сбежала и Джой отсутствует) в @box
ниже.
my @box = $mess =~ m[$oven]g;
Если я хочу «разобрать» детали коробки, я мог бы просто сделать:
my %hash = @box;
Или я мог просто пропустить коробку целиком,
my %hash = $mess =~ m[$oven]g;
Обратите внимание, что %hash
содержит следующее. Порядок утерян, и двойные ключи (если таковые существовали) сдавлены:
(
'April' => 'May',
'Richard' => 'Rich',
'Winter' => 'Win',
'William' => 'Will',
'Faith' => 'Hope',
'Aurora' => 'Dawn'
);