Perl erlaubt einem regulären Ausdruck mehrere Male mit dem "g" -Schalter nach dem Ende übereinzustimmen. Jedes einzelne Spiel kann dann geschlungen über, wie im Global Matching Unterabschnitt der Using Regular Expressions in Perl section of the Perl Regex Tutorial beschrieben:
while(/(x(?<foo>.))+/g){
say "&: ", $&;
say "foo: ", $+{foo};
}
Dies wird eine Liste iteriert produzieren:
&: xa
foo: a
&: xb
foo: b
&: xc
foo: c
, die noch nicht das, was Sie wollen, aber es ist sehr nah. Das Kombinieren einer globalen Regex (/ g) mit Ihrer vorherigen lokalen Regex wird es wahrscheinlich tun. Erstellen Sie im Allgemeinen eine erfassende Gruppe um Ihre wiederholte Gruppe und parsen Sie dann nur diese Gruppe mit einem globalen Regex, der nur eine einzige Iteration dieser Gruppe darstellt, und durchlaufen Sie sie oder verwenden Sie sie als Liste.
Es sieht aus wie eine Frage ziemlich ähnlich zu diesem - zumindest in der Antwort, wenn nicht Forumierung - wurde von jemand viel kompetenter beantwortet in Perl als ich: "Is there a Perl equivalent of Python's re.findall/re.finditer (iterative regex results)?" Sie möchten vielleicht die Antworten dafür auch überprüfen, mit mehr Details über den richtigen Gebrauch von globalen Regexen. (Perl ist nicht meine Sprache, ich habe nur eine ungesunde Wertschätzung für reguläre Ausdrücke.)
Ähnlich [diese Frage] (http://stackoverflow.com/questions/3459721/regex-group-in-perl-how-to-capture-elements-into-array-from-regex-group-that-mat) – Cameron