2012-05-09 2 views
3

Я считаю, что Perl 6 предлагает возможность записи повторяющихся групп отдельно, в отличие от более ранних аксессуаров, где вы могли бы только захватить последнюю группу или целую строку группы. Может кто-нибудь, пожалуйста, дайте хороший пример, как использовать эту удивительную функцию Perl 6? Напр.Perl 6 захват повторяющихся групп соответствия отдельно?

мне нужно, чтобы захватить все соответствующие группы для этого регулярного выражения

((?:(?:(?:(?:")(?:[^"]*?)")|(?:(?<!")(?:[^"]*?)(?!")))(?<!\\)\|)*) 

Как сделать это в Perl 6?

+3

Предоставьте образец ввода с выводом, который вы хотите получить. – mob

ответ

3

В целом, если вы количественно фиксируете захват, вы просто получаете список всех совпадений. Пример:

$ perl6 -e '"abc" ~~ /<alpha>+/ and say $<alpha>.join(", ")' 
a, b, c 

работа с позиционными захватами тоже:

$ perl6 -e '"abc" ~~ /(\w)+/ and say $0.join(", ")' 
a, b, c 

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

+0

Спасибо .. нет, он не сгенерирован, это просто для особого случая разбора текста. – bootkick

Смежные вопросы