Thread regulärer Ausdruck (6 answers)
Opened by Anna at 2010-03-08 12:17

Linuxer
 2010-03-08 13:24
#134250 #134250
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
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
2
3
4
5
6
7
8
$ 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!

View full thread regulärer Ausdruck