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):
$ 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"'
Vorher:
ein langer
String
ohne Zahlen!1!11
Nachher:
einlangerStringohneZahlen!!
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!