Gast: Regulärer Ausdruck

Hallo,
ich habe ein Problem mit einem ganz einfachen regulären Ausdruck.
Ich will "NL" und "CR" ersetzen durch einen Punkt.
Dies habe ich folgendermaßen gemacht.

$eingabe =~ s/[\r\n]/./g;

Wenn in der Eingabe nur  e i n   "NL"  o d e r  nur  e i n   "CR" steht, stehen im Ergebnisfeld  z w e i  Punkte.
Woran liegt dies?

  1. Also ich würde sagen, dass das schlicht und einfach daran liegt, dass in der Eingabe ZWEI der beiden Zeichen vorkommen.

    Probiere mal:

    $eingabe = "\n";
    $eingabe =~ s/[\r\n]/./g;
    print $eingabe;

    und du wirst sehen, dass da nur ein . erscheint. Bedenke, dass es vom Betriebssystem abhängt, ob ein Zeilenumbruch mit \r\n oder nur mit \n
    endet.

    1. Probiere mal:

      $eingabe = "\n";
      $eingabe =~ s/[\r\n]/./g;
      print $eingabe;

      und du wirst sehen, dass da nur ein . erscheint.

      So klapp es, aber wenn ich das Feld in einem anderen Programm aufrufe passiert der Effekt.

      Bedenke, dass es vom Betriebssystem abhängt, ob ein Zeilenumbruch mit \r\n oder nur mit \n
      endet.

      Ja, ich habe \n angegeben und es wird daraus \r\n und aus \r wird ebenfalls \r\n!

      Da soll mal einer draufkommen, wenn man nicht weiß, wie man diese undruckbaren Zeichen anzeign kann!
      Grüße vom Gast in dem Forum

      1. gudn tach!

        Da soll mal einer draufkommen, wenn man nicht weiß, wie man diese undruckbaren Zeichen anzeign kann!

        z.b. via ord.

        prost
        seth

        1. Danke und frohes Fest!

  2. Moin!

    Versuch's mal mit s/[\015\012]+/./g;

    -- Skeeve