Thread Conditional RegExp
(8 answers)
Opened by PHilbs at 2010-02-20 20:44
Hallo murphy,
danke für deine Antwort. Ich habe es so wie vorgeschlagen gelöst, indem ich für die einzelnen Tiere Subausdrücke erstellt habe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/usr/bin/perl use strict; use warnings; my $pattern = qr/^((?<k>katze)|(?<h>hund)):(?<n>[^,]+),(?(<h>)(?<g>\d+),)(?<x>w|m)/; blub("hund:waldi,23,m"); blub("katze:rosa,w"); sub blub { my $string = shift; print "-"x20; print "\nString:\t\t$string\n"; if ($string =~ $pattern) { print "Tier:\t\t"; if (defined($+{k})) { print "$+{k}\n"; } elsif (defined($+{h})) { print "$+{h}\n"; } print "Name:\t\t$+{n}\n" if (defined($+{n})); print "Gewicht:\t$+{g}kg\n" if (defined($+{g})); print "Geschlecht:\t$+{x}\n" if (defined($+{x})); } else { print "no matches...\n"; } } Ich bekomme folgende Ausgabe und denke somit, dass nun alles so klappt, wie es soll: Code: (dl
)
1 $ ./test.pl |