Seite 1 von 1

Ersetzen von Absatz+Text+Absatz

Verfasst: Sa, 01.03.2014 13:33
von Ingmar
Ich habe jetzt mit "Regulären Ausdrücken" jetzt einige ausprobiert, komme aber meinem Vorhaben nicht ganz so nah, wie meine Logik es sagt.

Folgende Beispiel:

Code: Alles auswählen

Text
BBBBB
Test2
Dabei Kann Text und Text2 individuell sein. BBBBB ist die Konstante.

Ergebnis soll folgendes sein:

Code: Alles auswählen

TextBBBBB Text2
oder sogar direkt
Text: Text2
Dabei habe ich BBBBB soweit an die Stelle gesetzt, wo später der Doppelpunkt mit einem Freizeichzen ersetzt werden kann.

Versuche mit \nBBBBB geht zwar, aber dabei bleiben immer noch 2 Zeilen. Experimente mit ^ (Absatzanfang) und $ (Absatzende) am Ende des Suchtextes wurden garnicht erst gefunden.

Früher hatte ich schon Probleme, 2 Absätze in einem Rutsch zusammen zu fassen (um doppelte oder sogar mehrfache Absätze in einem Fließtext raus zu nehmen)

Was mache ich da falsch?

Re: Ersetzen von Absatz+Text+Absatz

Verfasst: Sa, 01.03.2014 16:01
von lorbass
RegExe reagieren auf jedes Zeichen. Deine Textmuster sind daher unvollständig, da sie keine Aussage über den Zeilenabschluss enthalten. Zudem hast du es versäumt, Angaben zu deinem OpenOffice zu hinterlassen. Die sind in diesem Fall von besonderem Interesse, da sowohl Apache OpenOffice als auch LibreOffice einen Wechsel der eingesetzten RegEx-Engine vollzogen haben sollten:
AOOviewtopic.php?p=236291#p236291,
LOviewtopic.php?p=241987#p241987.

Ich habe noch keine eigenen Erfahrungen mit der „neuen“ RegEx-Engine. Die folgenden Aussagen gelten daher für die „alte“ Version. Abweichungen in der „neuen“ Version mag jemand anders beitragen.


Der anzuwendende RegEx ist abhängig davon, wie die Zeilen in deinem Text-Muster abgeschlossen werden.

Fall 1: BBBBB ist von Zeilenschaltungen »↲« umgeben. Dies findet der RegEx »\nBBBBB\n« und kann durch »:␣« ersetzt werden. Dabei steht »␣« für ein Leerzeichen.

Fall 2: BBBBB ist von Absatzenden »¶« umgeben. Hier wird's problematisch mit RegExen, denn jeder RegEx gilt nur bis zum Ende einer „Zeile“. Unter einer „Zeile“ ist in Writer-Texten stets ein Absatz zu verstehen. Die automatisch eingefügten Zeilenumbrüche und die manuellen Zeilenschaltungen dagegen sind Bestandteil einer so verstandenen „Zeile“ sind.

In diesem Fall hilft dir (möglicherweise) die Extension AltSearch.oxt, auf das hier im Forum mehrfach hingewiesen wurde, das ich selbst aber nicht benutze und somit nicht weiter bewerten kann.

Gruß
lorbass

Re: Ersetzen von Absatz+Text+Absatz

Verfasst: Sa, 01.03.2014 16:24
von Ingmar
Danke für die ausführliche Erklärung. Ich wußte zwar nicht, wie ich das Absatzzeichen hier hätte einfügen könnte. Allerdings kam mir der Gedanke auch nicht, erwähnenswert wäre. Sondern logisch, das es ein harter Absatz ist.

Zudem war mich weder bekannt, das gerade auf dem Gebiet immer was anders gemacht wird und zum anderen, das es so komplex ist. Anmerkung an der Stelle ist, das ich Aoo 4.0.1 verwende.

Mußte mich kurz mnit diesem Add-On beschäftigen. Zumal ich das bei Aoo noch nicht gemacht hatte. Runter geladen, noch ein paar Hinweise hier im Forum eingesehen und ... klappt super. Macht jetzt das, was ich mir vorgestellt habe. Daher nochmal vielen dank.

Re: Ersetzen von Absatz+Text+Absatz

Verfasst: Sa, 01.03.2014 17:03
von lorbass
Ingmar hat geschrieben: Ich wußte zwar nicht, wie ich das Absatzzeichen hier hätte einfügen könnte.
Eine Beschreibung hätte ausgereicht. Ich habe die Zeichen – U+21B2: ↲ und U+00B6: ¶ – auch nur ergänzend zur Beschreibung („Zeilenschaltung“, „Absatzende“) verwendet.

Gruß
lorbass