Hi,
Ein Beispiel:
Text: "Hallo ich bin (name)Alex..(/name) und nicht (name)Micha(/name)"
Aus diesem Text möchte ich alles finden, was zwischen (name) und (/name) steht inkl. Zeilenümbruche und sonstiges - und dieses durch etwas anderes ersetzen.
Bisher habe ich folgendes dafür verwendet:
(name).+(/name)
Das Ergebnis davon ist aber: "(name)Alex..(/name) und nicht (name)Micha(/name)"
Ich hätte aber gerne folgendes als Ergebnis:
"Alex"
"Micha"
Weiss jemand, wie man das schreiben muss?
Ich schätze, dein Problem hängt mit der "gierigkeit" deiner RE zusammen:
Die RE versucht alles zw. "(name)" und "(/name)" zu finden.
Für * oder + versucht eine RE möglichst *viele* Zeichen zu finden. (Das nennt man "Greedy"). Wenn du nun die kleinst mögliche Anzahl an
Zeichen finden möchtest solltest du den "non-greedy"-Operatror "?" benutzen. Wenn du ein ? nach einem * oder + folgen lässt, wird die kleinst mögliche Anzahl Zeichen gefunden.
In deinem Beispiel sähe das dann so aus:
(name).+?(/name)
Hoffe das hilft dir weiter...
Gruss
Chriss