Bio: Zeile Splitten und in Variable packen

Beitrag lesen

Sup!

Hierbei solltest Du angeben, daß die Zeichen zwischen den ; keine ; sein dürfen. Im Moment läßt Du alles zu, weswegen der Ausruck bei mehr als drei ; nicht funktionieren würde.
$_ =~ /[1]+;([^;]+);[^;]/;

So kreigst Du immer den zweiten Abschnitt, da auch noch der Anfang gesetzt ist und es kann nach dem 3. Abschnitt noch mehr kommen.

Nach meiner Interpretation matcht mein Ausdruck

$_ =~ /.*?;(.*?);.*/;

auch immer den zweiten Abschnitt.

Zuerst wird non-greedy alles gematcht bis zum ersten Semikolon (darum müssen Semikola nicht ausgeschlossen werden, denn .*? kann auch *gar nichts* matchen.
Dann wird non-greedy gematcht bis zum zweiten Semikolon (also der zweite Abschnitt) und wegen der Klammern in $1 gespeichert, das letzte .* matcht dann greedy den Rest.

Gruesse,

Bio

--
Keep your friends close, but your enemies closer!

  1. ^; ↩︎