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 ↩︎