CPAN: Was läuft bei diesem Regexp ab?

Beitrag lesen

NICHT funktioniert 3: (.*?),(.*?),(.*?)

Das ist eine erbärmlich schlechte Problembeschreibung.

> re.pl

$ $_ = 'aaaaaa,bbbbb,ccccc'
    aaaaaa,bbbbb,ccccc

$ /(.*?),(.*?),(.*)/
    [
        [0] "aaaaaa",
        [1] "bbbbb",
        [2] "ccccc"
    ]

$ /(.*),(.*),(.*)/
    [
        [0] "aaaaaa",
        [1] "bbbbb",
        [2] "ccccc"
    ]

$ /(.*?),(.*?),(.*?)/
    [
        [0] "aaaaaa",
        [1] "bbbbb",
        [2] ""
    ]

Wie man an der Ausgabe sehen kann, funktioniert №3 sehr wohl. Es gibt bloß nicht zurück, was du erwartest, sondern den leeren String. .*? stimmt überein mit dem leeren String: jedes Zeichen, **null-** oder mehrmal.

Um das erwartete Ergebnis zu bekommen, musst du das Muster am Ende mittels $ verankern.