Thread perldoc für alte Versionen bzw regex Frage
(4 answers)
Opened by torsten at 2011-06-14 16:57
Danke.
Zur Info, es geht. Wobei zu beachten ist, dass CODE keine my Variablen deklarieren darf unter Perl 5.8.8. Sonst segfault. Hier ist mein Problem: Finde alle Wörter, die zu mehr als 50% aus Ziffern bestehen, wobei "Wort" als Folge von Nicht-Space zu verstehen ist. Und die Lösung: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 sub md { my $n=$_[0]=~tr!0-9!!/length $_[0]; warn "^N: $_[0], n=$n\n"; $n; } print $1 while $ARGV[0]=~/ (?:^|(?<=\s)) # Wortgrenze (\S+(?=\s|$)) # das Wort als $1 inkl. Begrenzung (?(?{md($^N)<=0.5}) # die Bedingung (negiert) \A # schlägt an dieser Stelle immer fehl ) /gx Durch die Angabe der Wortbegrenzer wird erreicht, dass md() pro Wort nur einmal aufgerufen wird und nicht n-fach für jeden Substring. In neueren Perls sollte man statt \A vielleicht (*FAIL) benutzen, der besseren Lesbarkeit wegen. |