Thread regulärer Ausdruck
(6 answers)
Opened by Anna at 2010-03-08 12:17
Hi nochmal,
noch ein Nachtrag zu Deiner Zeichenklasse: \s enthält bereits alle Whitespacezeichen, darunter auch das \n. \d steht für die Ziffern 0-9, könnte also als "Abkürzung" verwendet werden. Der * hat hier keine Sonderfunktion und wird nur als normales Zeichen gewertet. Unter Rücksicht auf Deine Definition, was Du entfernen möchtest, könntest Du also folgende Klasse verwenden: [\s\d] Da die Zeichen auch mehrfach hintereinander stehen können, würde ich noch einen sogenannten Quantifier einsetzen; in diesem Fall das +, welches für "ein- oder mehrfaches Vorkommen" steht: [\s\d]+ Zusammengefasst wäre es also beispielsweise so zu schreiben: ( my $input = shift @ARGV ) =~ s/[\s\d]+//g; Schauen wir mal (auf der Linux Konsole): Code: (dl
)
1 $ perl -wle '$var="ein \t langer\nString\nohne Zahlen!1!11"; print "Vorher:\n$var\n"; $var =~ s/[\d\s]+//g; print "Nachher:\n$var\n"' edit: * aus zeichenklasse entfernt. Danke pq. Last edited: 2010-03-08 14:11:37 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |