<br> entfernen gegen bedingt Leerzeichen
roger
- perl
Hallo,
ich lese einen HTML-String ein.
Diese Zeile lautet z.B. "Hans Dampf<br>Schillerstrasse"
oder "Hans Dampf <br>Schillerstrasse"
oder "Hans Dampf<br> Schillerstrasse"
oder "Hans Dampf Schillerstrasse"
Nun möchte ich <br> gegen ein Leerzeichen ersetzen, jedoch nur wenn vor oder nach <br> kein Leerzeichen ist.
Kann ich dies in einen 1 Zeiler schreiben oder muss ich hier if else usw.
zurückgreifen.
Gruß
roger
Ab perl 5 werden sogenannte look-aheads eingeführt:
(?!\s)<br>(?!\s)
(?!...) bedeutet, dass ... nicht vorkommen darf, ohne dass es dabei gematcht würde.
Gruß, LX
Hi,
Ab perl 5 werden sogenannte look-aheads eingeführt:
(?!\s)<br>(?!\s)
(?!...) bedeutet, dass ... nicht vorkommen darf, ohne dass es dabei gematcht würde.
Wobei das aber auf bla <br>bla matcht.
Denn der erste Lookahead sagt: an dieser Stelle darf kein Whitespace folgen.
Und das < danach sagt: an dieser Stelle muß ein < folgen.
Und da < kein Whitespace ist, matcht der Ausdruck.
Vorne muß es ein negative lookbehind (?<!...) sein, hinten ein negative lookahead (?!...).
cu,
Andreas
Hallo,
ich check es nicht. Hier mein Code.
my $text = 'Hallo das ist ein <br>Text';
print "$text\n";
if ($text =~ /(?!\s)<br>(?!\s)/)
{ $text =~ s/<br>/ /ig; }
else
{ $text =~ s/<br>//ig; }
print "$text\n";
Vielleicht sitze ich auf der Leitung.
Dann hätte ich noch das Problem
my $text = 'Hallo das ist ein <br> Text';
d.h. wenn vor und nach <br> ein Leerzeichen steht. Dann müsste ich z.B. $text =~ s/ <br>//ig;
ersetzen.
Ich sehe es einfach nicht.
Gruß
roger
Dann hätte ich noch das Problem
Dass du besser eine Callback Funktion verwenden solltest, um deine Probleme kontrolliert zu behandeln.
$text =~ s/ ( \s* <br> \s* ) /breakify($1)/gex;
sub breakify{
$_[0] eq " <br>" and return "bla";
$_[0] eq "<br> " and return "blub";
$_[0] eq " <br> " and return "smurf";
return "gulb"
}
mfg Beat
Dass du besser eine Callback Funktion verwenden solltest, um deine Probleme kontrolliert zu behandeln.
$text =~ s/ ( \s* <br> \s* ) /breakify($1)/gex;
sub breakify{
$[0] eq " <br>" and return "bla";
$[0] eq "<br> " and return "blub";
$_[0] eq " <br> " and return "smurf";
return "gulb"
}
>
> mfg Beat
Hallo,
das ist schon lecker
Danke
roger