Regulärer Ausdruck
Cooker
- perl
Hallo,
ich möchte Leerstellen und/oder Zeilenumbrüche am Textende entfernen.
Also "x xx\r\nyyy \r\n \r\n " (mit \r\n oder mit Leerstelle endend)
====> "x xx\r\nyyy"
Dies habe ich jetzt mit
txt =~ s/(\r\n)* *(\r\n)* *//g
einigermaßen hingekriegt (nicht in allen Fällen klappts).
Bestimmt gibt es aber einen eleganteren Weg.
Wie sieht der aus?
Gruß
Cooker
Hi,
Bestimmt gibt es aber einen eleganteren Weg.
Wie sieht der aus?
http://www.google.de/search?q=perl+trim
MfG ChrisB
Hi,
Um auf diese Suche zu kommen, muss man aber schon schon wissen, dass es "trim" gibt.
Leider jedoch nicht in Perl.
Die Suche führt mich u.a. auf eine selbstgeschriebene Funktion, die ebenfalls einen regulären Ausdruck verwendet.
Und diese müsste ich dann x-mal aufrufen (trim NL, trim Leerstellen, dann wieder trim Nl etc.
Gruß
Cooker
Hallo,
ich möchte Leerstellen und/oder Zeilenumbrüche am Textende entfernen.
Wenn ich mich nicht irre, magst du whitespace meinen.
Das entsprechende Referenzzeichen dafür ist \s
und eine Impklementation dafür ist
s/^\s+//; # am Stringanfang
s/\s+$//; # am Stringende
Es ist generell performanter, die REs separat zu halten.
Das folgende ist nicht performanter.
s/^\s*(.*?)\s*$/$1/; # ungünstig
Also "x xx\r\nyyy \r\n \r\n " (mit \r\n oder mit Leerstelle endend)
====> "x xx\r\nyyy"
Dies habe ich jetzt mit
txt =~ s/(\r\n)* *(\r\n)* *//g
einigermaßen hingekriegt (nicht in allen Fällen klappts).
Bestimmt gibt es aber einen eleganteren Weg.
Falls du nicht generell whitespace meinst, sondern eine dezidierte Auswahl dieser Zeichen, so kannst du eine zeichenklasse [] verwenden
Entfernt linefeed "\n" return "\r" whitespace "\ " tab "\t"
s/[1]+//; # am Stringanfang
s/[\r\n\ \t]+$//; # am Stringende
mfg Beat
\r\n\ \t ↩︎
Hallo,
danke!
Cooker