Entwicklung eines regulären Ausdrucks
Martin Hein
- programmiertechnik
0 seth_not@home0 Don P
Hallo Forum,
ich stehe vor folgender Aufgabe:
Ich muss im XHTML-Code einer Website Text-Ersetzungen vornehmen.
Also einfach search & replace. Die Schwierigkeit dabei ist,
diese Ersetzungen nur in dem vom Browser dargestellten Text
vorzunehmen (nicht z.b. in Pfadangeben). Ich muss also einen
regulären Ausdruck entwickeln, bei dem das Suchmuster nur den vom Browser als Text dargestellten String findet. Naheliegend
erscheint mir folgende Behauptung:
Text der von '><' eingeschlossen ist, wird als Text dargestellt.
Ist dem so ?
Gegenprobe:
-----------
<html><head><title>text</title></head>
Ich bin mit regulären Ausdrücken blutiger Anfänger. Daher
stellt sich mir die Frage:
Lässt sich der reguläre Ausdruck so defnieren, dass er im
zweiten Beispiel nicht matched ?
danke und
beste gruesse,
martin
gudn tach!
die frage kommt oefters. schau dir mal im thread </archiv/2007/11/t161925/#m1053366> die antworten von EisFuX und mir an; und zwar ab </archiv/2007/11/t161925/#m1053426>.
es werden dort zwei moeglichkeiten genannt (die von EisFuX ist vermutlich schneller) und es wird darauf hingewiesen, dass es einschraenkungen gibt.
prost
seth
Hallo,
ich hab mir die Lösung angesehen, nicht verstanden (weil ich blutiger regex-Anfänger bin ;( ) und versucht den Ausdruck
für Homesite selbst mal zu versuchen. Ich hab mir das Beispiel
im Thread genommen:
<tomate banane >banane</tomate> banane zitrone banane gurke banane erdbeere<banane >orange banane</banane>
und als suchmuster : >([^<>]*)banane([^<>]*)<
und als ersetzung : >\1gurke\2<
... eingesetzt. Das hat mit dem Teststring das gemacht, was es
sollte. Prima ! ... aber mir ist schon aufgefallen, dass dein
Lösungsvorschlag wesentlich komplexer ist.
Scheitert meiner ?
danke und
beste gruesse,
martin
Hallo,
Text der von '><' eingeschlossen ist, wird als Text dargestellt.
Ist dem so ?
Ja, aber es reicht nicht ganz. Ich fürde es so formulieren:
Text der von '><' eingeschlossen ist und nicht selbst ">" oder "<"enthält, also:
/>([!<>]+)</s
Der Zusatz s bewirkt, dass der Text auch über Zeilenenden hinaus erkannt wird.
Es muss natürlich sichergestellt sein, dass "<" oder ">" nicht als normaler Text vorkommt.
Gruß, Don P