Perl 6 захватывает повторяющиеся совпадающие группы отдельно?
Я полагаю, что Perl 6 предлагает возможность захвата повторяющихся групп отдельно, в отличие от более ранних версий, где вы могли захватывать только последнюю группу или всю строку сопоставленной группы. Может кто-нибудь дать хороший пример, как использовать эту замечательную функцию Perl 6? Например,
Мне нужно захватить все подходящие группы для этого регулярного выражения
((?:(?:(?:(?:")(?:[^"]*?)")|(?:(?<!")(?:[^"]*?)(?!")))(?<!\\)\|)*)
Как мне это сделать в Perl 6?
1 ответ
Решение
В общем, если вы определяете количество снимков, вы просто получаете список всех совпадений. Пример:
$ perl6 -e '"abc" ~~ /<alpha>+/ and say $<alpha>.join(", ")'
a, b, c
работает также с позиционными захватами:
$ perl6 -e '"abc" ~~ /(\w)+/ and say $0.join(", ")'
a, b, c
Теперь вы можете просто применить это к своему собственному регулярному выражению, которое выглядит искусственно запутанным. Это генерируется каким-то образом?