Suchen und Ersetzen mit Platzhalterzeichen

24/11/2008 - 22:22 von Frank Peters | Report spam
Hallo,

ich möchte mit Word 2003 formatierte Wörter mit Codes einfassen, um den
Text anschließend extern weiterzuverarbeiten. Ein Beispiel: Aus einem
fett geschriebenen "Test" soll werden "%b Test%b0 ".

M. E. sollte es mithilfe von Platzhalterzeichen so funktionieren:

Suche: "(*)" | Schriftart: Fett
Ersetze durch "%b \1%b0 " | Schriftart: Nicht Fett

Doch statt das formatierte Wort entsprechend einzufassen, wird jeder
Buchstabe durch die Zeichenfolge "%b %b0 " ersetzt; aus meinem Testwort
wird also: "%b %b0 %b %b0 %b %b0 %b %b0 ".

Warum klappt es nicht? Wo ist mein Denkfehler?

Frank
 

Lesen sie die antworten

#1 Klaus Linke
25/11/2008 - 00:46 | Warnen spam
Hallo Frank,

Warum klappt es nicht? Wo ist mein Denkfehler?



Nur sehr bedingt ein Denkfehler, Word spinnt einfach.

Um die Spannung rauszunehmen, erst mal eine Lösung:
Du brauchst keinen Mustervergleich. Lasse "Suchen nach" einfach leer, und
ersetze durch "%b^&%b0".

Ein Grund warum die Mustervergleichs-Suche nicht klappt, ist, dass der
Platzhalter * so wenig wie möglich abdeckt. Er ist "nicht-gierig"
(non-greedy).
Mit deiner Suche würde man erwarten, dass jeder einzelne Buchstabe mit %b
und %b0 eingefasst wird.
Dass die Buchstaben gelöscht werden ist bestimmt ein Programmfehler.

Wenn du mit Mustervergleich fetten Text finden willst, brauchst du einen
"gierigen" (greedy) Ausdruck.
Ich benutze meist [^13] für beliebige Zeichen, da ich Dinge nicht über
Absatzgrenzen hinweg taggen möchte.
([!^13]{1;}) wàre ein geeigneter gieriger Ausdruck.

(?{1;}) sollte eigentlich auch funktionieren, ist aber wider Erwarten nicht
gierig und taggt einzelne Zeichen... Das scheint mir ein weiterer Fehler zu
sein.

Gruß,
Klaus


"Frank Peters" schrieb:
Hallo,

ich möchte mit Word 2003 formatierte Wörter mit Codes einfassen, um den
Text anschließend extern weiterzuverarbeiten. Ein Beispiel: Aus einem fett
geschriebenen "Test" soll werden "%b Test%b0 ".

M. E. sollte es mithilfe von Platzhalterzeichen so funktionieren:

Suche: "(*)" | Schriftart: Fett
Ersetze durch "%b \1%b0 " | Schriftart: Nicht Fett

Doch statt das formatierte Wort entsprechend einzufassen, wird jeder
Buchstabe durch die Zeichenfolge "%b %b0 " ersetzt; aus meinem Testwort
wird also: "%b %b0 %b %b0 %b %b0 %b %b0 ".

Warum klappt es nicht? Wo ist mein Denkfehler?

Frank

Ähnliche fragen