[quote=MatthiasR,29.08.2004, 20:31]Solche sachen kotzen mich eben bei der Programmierung (egal welche Sprache) an. Theorie und Praxis sind grundverschieden ;-)[/quote]
Nein, wo/was denn?
?! ist negative look ahead (null zeichen)
Man schaut halt, ob das was dort angegeben wird nicht folgt. Gefangen wird nichts.
s~<(?!b>|i>|/b>|/i>)~<~gi
bedeutet:
Jede öffnende spitze Klammer, auf die weder
b> noch
i> noch
/b> noch
/i> folgt, wird durch
< ersetzt.
Zu
s~<([^bi]|/[^bi]|/?[^/>]{2,}/?)>~<$1>~gi
Man sucht nach einer spitzen öffnenden Klammer, auf die ein Zeichen folgt, das kein b und kein i ist oder auf die ein Slash und ein Zeichen folgt, das kein b und kein i ist oder auf die ein optionales Slash und mindestens zwei Zeichen, die weder Slash noch schließende spitze Klammer sind gefolgt von einem optionalen Slash folgt.
liesse sich auch zu
zusammenfassen.
Damit hätte man dann zum Beispiel:
s~<(/?(?:[^bi]|[^/>]{2,}/?))>~<$1>~gi
Der optionale Slash am Ende bezieht sich wohl auf sowas wie
<br />.
Wenn man sich jetzt noch den Gefallen tut mit x zu arbeiten wirds auch übersichtlicher:
s~<
(
/?
(?:
[^bi] |
[^/>]{2,}/?
)
)
>
~<$1>~gix
Ach ja und bevor Du fragst ;)
(?: ... ) ist eine gruppierende aber nicht speichernde Klammer. Ohne
?: wäre der Inhalt nochmal zusätzlich in
$2 abgelegt worden, was unnötig Platz und Zeit kostet.\n\n
<!--EDIT|Crian|1093860415-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite