Thread Fieses Matching-Pattern entschlüsseln (16 answers)
Opened by Speedriff at 2013-11-25 11:10

clms
 2013-12-02 17:43
#172377 #172377
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2013-12-02T15:41:09 payx
der Ausdruck .* matcht so viele Zeichen wie möglich.

Der Ausdruck .*\/ matcht so viele Zeichen wie möglich und dann einen Slash.

Der Ausdruck .*?\/ matcht so wenige Zeichen wie möglich und dann einen Slash.

Interessant wird es, wenn auch noch "backtracking" ins Spiel kommt.

Beispiel: qr(^(.*)/(.*)/(.*)$)

Das erste (.*)/ ist greedy, matched also zunächst bis zum letzten Slash. Da dann aber der Rest des Strings nicht mehr zum Rest der Regex passen würde, wird dann ein neuer Versuch mit einem Match bis zum vorletzten Slash gestartet. Da passt dann auch der Rest der Regex, der ja einen weiteren Slash erfordert.

Bei /p1/abc/p2/dir/data.x kommt also $1 == "/p1/abc/p2", $2 == "dir", $3 == "data.x" raus.

2013-12-02T15:41:09 payx
PS: Ich persönlich würde es eher nicht in Angriff nehmen, einen Leitfaden für den Gebrauch von regular expressions zu verfassen. Erstens gibt es hierzu schon eine Menge sehr guter Literatur, zweitens ist das ein wahrhaft weites Feld ...

Dem kann ich mich nur anschließen.

View full thread Fieses Matching-Pattern entschlüsseln