Thread Conditional RegExp (8 answers)
Opened by PHilbs at 2010-02-20 20:44

Gast PHilbs
 2010-02-20 20:44
#133385 #133385
Hallo,

ich verzweifle gerade an einem regulären ausdruck.

Folgende Texte sollen gematcht werden:

Code (perl): (dl )
1
2
my $blub = "hund:bello,12,w";
my $blab = "katze:mini,m";


der text vor dem Doppelpunkt gibt das Tier an. Hier kann nur "hund" oder "katze" stehen. Zwischen Doppelpunkt und erstem Komma steht der Name des Tieres.
Nun kommt das spannende: Wenn das Tier vom Typ "hund" ist, soll hier auch das gewicht stehen. Aber nur dann, wenn es eine Katze ist, interessiert das Gewicht nicht und es folgt gleich das Geschlecht (m|w).

Bisher sieht mein Ausdruck so aus:

Code (perl): (dl )
my $pattern = qr/^(?<t>hund|katze):(?<n>[^,]),(?<g>\d+),(?<s>m|w)$/;


t = typ
n = name
g = gewicht
s = geschlecht

Aber wie bringe ich nun die Bedingung mit in den Ausdruck?

Ich hatte dann sowas ausprobiert, was (nach der u.g. Lektüre) natürlich nicht geklappt hat:

Code (perl): (dl )
my $pattern = qr/^(?<t>hund|katze):(?<n>[^,])?(<t>=hund,(?<g>\d+)),(?<s>m|w)$/;



Ich habe mir bereits den Abschnitt http://perldoc.perl.org/perlretut.html#Conditional-expressions durchgelesen, aber ich verstehs nicht, das Beispiel ist mir dort zu kompliziert...


Kann mir jemand dabei helfen?


Gruß

PHilbs

View full thread Conditional RegExp