gudn tach EisFuX!
angenommen ereg haette keine probleme mit negative assertions variabler laenge (so wie z.b. der texteditor vim, der kann naemlich in dieser hinsicht erstaunlicher mehr als perl), dann sollte diese regexp imho funzen.
Ich hatte angenommen, dass die ereg-Funktionen überhaupt nichts mit Assertions am Hut haben.
das mag ja auch stimmen. im php-handbuch steht ebenfalls (allerdings eher implizit), das ereg das nicht kann. da ich nicht wusste, ob ereg damit klarkommt, sprach ich ja absichtlich im konjunktiv II.
in vim waere das regexp-pattern uebrigens
s/(<[^<>]*)@<!banane([^<>]*>)@!/abbl/g
und hat einen kleinen test von mir bestanden.
Umfasst der Test auch HTML-Kommentare?
ja. in kommentaren wurde auch brav nicht ersetzt.
(iow: vim ist toll!)
Ooch, wenn dein erster Computer serienmäßig eine Maus gehabt hätte,
hatte er! sie war zwar noch etwas eckiger als die heutigen. aber ansonsten war's ne richtige mouse.
wärst du so bequem wie ich und würdest zum Wechseln auch wesentlich mehr Anreize benötigen.
ich bin noch viel bequemer, weil ich die hand nicht immer zur mouse bewegen will. ;-p
ich bin uebrigens von notepad ueber homesite ueber proton und ultraedit zu vim gewechselt.
... und ich wette, über kurz oder lang kann
PSPad das auch. [...] ;-)
pspad wird aufgrund seiner konzeption niemals vim erreichen koennen.
naja, ok, von firefox dachte ich das auch mal; aber siehe da: "First there was..."
kurzer versuch einer erklaerung; ich denke, dass der parser folgendermassen vorgeht:
Man könnte natürlich auch Google nach "reguläre ausdrücke in c# assertion" fragen
und dann bspw. das hier finden:
http://mojo-corp.de/regulaere_ausdruecke_c_sharp.html
aeh, was meinst du? ich versteh' deinen kommentar im kontext nicht.
$muster = '/banane(?=[^>]*<[^>]+>)/i';
scheitert an
"banane"
weil danach nie mehr eine spitze klammer kommt.In halbwegs validem HTML sollte es eigentlich immer ein "</html>" am Ende des Dokuments geben, oder?
oh, stimmt natuerlich.
In dem Falle würde der RegEx aber sicher über Kommentare stolpern.
kommt darauf an, ob man darin uebersetzen will oder nicht.
Um 100-prozentig sicher zu gehen, müsste man wahrscheinlich das HTML in Tokens (Tag, Nicht-Tag, Kommentar, ...)
zerlegen und dann nur in den Nicht-Tag-Bereichen ersetzen.
das waere sicherlich die beste loesung, weil der code dann noch halbwegs gescheit wartbar sein sollte. (fertige html-parser gibt es ja bereits.)
mit regexp ginge es bestimmt auch, aber wuerde wohl zu einem monster fuehren.
prost
seth