Я пытался сохранить первую группу в @a1
и вторую группу в @a2
Сохраните элемент группировки в двух разных массивах в perl?
my $string = "abc123def456abc321def654";
my (@a1,@a2) = $string =~m/abc(\d+)def(\d+)/g;
$, = "\n";
print @a1;
Результат является , а затем @a2
пуст. Но я хочу, чтобы результат был @a1 = 123 321
; @a2 = 456 654
Для этого результата я попробовал хэш, поскольку для хранения ключей первая группировка и значения являются второй группировкой, но проблема в дубликатах удаляется. Любой возможный способ сделать это с помощью одного регулярного выражения?
Я пробовал eval group
в пределах соответствующего образца. Я получаю правильный результат от @a1
, но @a2
не так. И не знаю, в чем проблема?
my (@a1, @a2);
$string =~m/abc(\d+) (?{push @a1, $1}) def(\d+)(?{push @a2,$2 }) \G/x;
@a1
результат
1234
321
666
@a2
результат
4567
456
45
4
654
65
6
777
77
7
Почему вы пытаетесь принудить это к одному регулярному выражению? – Sobrique
@sorbrique У меня был один звонок, он сказал, что это возможно с одним регулярным выражением. Так что я пытаюсь это долгое время с группой eval, но я не мог получить результат. – mkHun
@mkHun. Поскольку вам кажется, что он строго нуждается во всем внутри регулярного выражения, я добавил это к моему ответу. – zdim