smudo: regex (\n durch <br /> ersetzen)

Hallo Forum!

ich würde gerne alle alleinstehenden \n durch <br /> ersetzen.

  
my $test = "Hallo,\nDu bist angemeldet\n\nMit freundlichen Grüßen\n";  
$text =~ s/\n{1}/<br \/>/g;  

leider werden auch die beiden hintereinanderstehenden \n\n ersetzt.

Was mache ich falsch?

LG

  1. Lieber smudo,

    ich würde gerne alle alleinstehenden \n durch <br /> ersetzen.
    [...]
    leider werden auch die beiden hintereinanderstehenden \n\n ersetzt.

    dann ersetze doch erst alle doppelten (mehrfachen?) Zeilenumbrüche durch etwas anderes, bevor Du die einzelnen ersetzt!

    Etwas komplizierter geht es auch mit Lookahead und Lookbehind, wobei ich mir da in der richtigen Schreibweise nicht 100%ig sicher bin:

    my $test = "Hallo,\nDu bist angemeldet\n\nMit freundlichen Grüßen\n";  
    $text =~ s/(?<!\n)\n(?!\n)/<br \/>/g;
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. gudn tach!

      ich würde gerne alle alleinstehenden \n durch <br /> ersetzen.
      [...]
      leider werden auch die beiden hintereinanderstehenden \n\n ersetzt.

      dann ersetze doch erst alle doppelten (mehrfachen?) Zeilenumbrüche durch etwas anderes, bevor Du die einzelnen ersetzt!

      waere imho zu fehleranfaellig. dann lieber so:

      [...] mit Lookahead und Lookbehind, wobei ich mir da in der richtigen Schreibweise nicht 100%ig sicher bin: [...]

      $text =~ s/(?<!\n)\n(?!\n)/<br \/>/g;

      passt.

      prost
      seth