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

Теперь вы можете просто применить это к своему собственному регулярному выражению, которое выглядит искусственно запутанным. Это генерируется каким-то образом?

Другие вопросы по тегам