Perl permet une expression régulière pour correspondre à plusieurs reprises avec le commutateur « g » après la fin. Chaque match individuel peut alors être mis en boucle sur, comme décrit dans le paragraphe mondial de correspondance du Using Regular Expressions in Perl section of the Perl Regex Tutorial:
while(/(x(?<foo>.))+/g){
say "&: ", $&;
say "foo: ", $+{foo};
}
Cela produira une liste itéré:
&: xa
foo: a
&: xb
foo: b
&: xc
foo: c
qui est toujours pas ce que vous voulez, mais c'est vraiment proche. La combinaison d'une regex globale (/ g) avec votre ancienne regex locale le fera probablement. Généralement, créez un groupe de capture autour de votre groupe répété, puis ré-analysez juste ce groupe avec une expression rationnelle globale qui représente juste une seule itération de ce groupe, et parcourez-la ou utilisez-la comme une liste.
Cela ressemble à une question assez similaire à celle-ci - au moins en réponse, sinon forumlation - a été répondu par quelqu'un de beaucoup plus compétent chez Perl que moi: "Is there a Perl equivalent of Python's re.findall/re.finditer (iterative regex results)?" Vous pourriez vouloir vérifier les réponses pour cela aussi, avec plus de détails sur l'utilisation correcte des regexes globales. (Perl n'est pas mon langage, j'ai juste une appréciation malsaine pour les expressions régulières.)
similaires à [cette question] (http://stackoverflow.com/questions/3459721/regex-group-in-perl-how-to-capture-elements-into-array-from-regex-group-that-mat) – Cameron