Skeeve: Problem mit RegEx und Ersetzen

Beitrag lesen

Moin!

Hier eine Variante die mit den Umbrüchen klarkommt, vorausgesetzt, Du kannst damit leben, daß die gesamten Daten auf einmal in den Speicher geladen werden dürfen (Die 3 Zeilen bei "SLURP:".

Zudem spare ich das mehrfache abarbeiten desselben Strings indem er erstmal in Gruppen (mit Klammern / ihne Klammern) geteilt wird (split) und die mit Klammern (jede 2te/ungerade) einfach von allen <...> befreit wird.

#!/usr/bin/perl  
  
use strict;  
use warnings;  
  
SLURP: { local $/;  
 $_= <DATA>;  
}  
my $odd=1;  
foreach ( split /(\{[^}]*\})/s ) {  
 if ( $odd= 1-$odd ) {  
  s/<[^>]*>//g;  
 }  
 print;  
}  
  
__DATA__  
OK: {Berlin, Bremen} .... {Rom - Pisa} .... {Castrop<br> Rauxel} ..  
OK: {Berlin, Bremen} .... {Rom - Pisa} .... {Castrop<br> <br>Rauxel} ..  
OK: {Berlin, Bremen} .... {Rom <br> Pisa} .... {Castrop<br> Rauxel} ..  
OK: {Berlin, <br> Bremen} .... {Rom <br><br> Pisa} .... {Castrop<br> Rauxel} ..  
OK: {Berlin, Bremen<br>} .... {Rom - Pisa} .... {Castrop<br> Rauxel} ..  
NICHT OK 1a:{Berlin, Bremen} .... {Rom - Pisa} .... {Castrop<br>  
NICHT OK 1b:Rauxel} ..  
NICHT OK 2a:{Berlin, Bremen} .... {Rom - Pisa} .... {Castrop<br  
NICHT OK 2b:>Rauxel} ..  

-- Skeeve