Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Das Textverarbeitungsprogramm

Moderator: Moderatoren

m-o-p
*
Beiträge: 10
Registriert: Sa, 22.06.2013 14:45

Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von m-o-p » Mi, 06.11.2019 18:43

Hallo Forum,

nach umfangreicher Suche bin ich einfach nicht weitergekommen, wie das Ersetzen von Leerzeichen durch Tabulatoren mittels regulärer Ausdrucke mit Writer funktioniert. Hier ein Auszug aus dem Text:

(Ue = 1 V , Gain = 10): DC .... 220 kHz (-3 dB)
Gain = 100): DC .... 50 kHz (-3 dB)
Eingangswiderstand: 1 MOhm

Soweit bin ich gekommen:
Suchen und Ersetzen -> Reguläre Ausdrücke
Suche: [:space:]+
Ersetzen: \t
Mal abgesehen davon, dass die Suche jedes Leerzeichen findet, und nicht 2 oder mehr ([:space:]{2;} findet nichts), werden die Leerzeichen mit dem Standard-Tabulator-Abstand ersetzt. Ich möchte jedoch, dass der Tabulator genau an der Stelle gesetzt wird, wo die Leerzeichen aufgehört haben. Mit der Erweiterung "Suchen und Ersetzen-Alternative" komme ich hier auch nicht weiter. Ich hoffe, ihr könnt mir weiterhelfen.

flymax180
***
Beiträge: 61
Registriert: Di, 29.01.2019 12:19

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von flymax180 » Mi, 06.11.2019 18:57

Das scheinen mir 2 Probleme zu sein:
1) ersetzen der Leerstellen durch tab - ich würde einfach ein paarmal 2 Leerstellen durch 1 Leerstelle ersetzen (geht auch ohne regulären Ausdruck) bis nix mehr gefunden wird, dann die verbleibenden mit reg.Ausdruck durch einen Tab
2)WO dann die Tabs stehen müsste durch eine Absatzvorlage definiert werden, einige normal, einige Dezimal- oder rechts-Tabs (im Lineal festlegen)
Oder habe ich was falsch verstanden?

m-o-p
*
Beiträge: 10
Registriert: Sa, 22.06.2013 14:45

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von m-o-p » Mi, 06.11.2019 19:22

Danke dir für die schnelle Antwort!
Du hast es korrekt aufgefasst. So wie du es schreibst, funktioniert das natürlich auch. In einem großen Dokument mit vielen solcher Auflistungen ist es allerdings mühsam, auf diese Weise vorzugehen.

m-o-p
*
Beiträge: 10
Registriert: Sa, 22.06.2013 14:45

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von m-o-p » Do, 07.11.2019 21:10

Mühsam, aber wohl die einzige Möglichkeit. Das hilft mir schon weiter. Danke für deine Unterstützung!

Gast Peter

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von Gast Peter » Fr, 08.11.2019 10:54

Guten Morgen Mop.
Stell mal ein Beispieldokument zur Verfügung aus dem hervorgeht, wie es vorher und nachher aussieht.

Was genau soll denn ersetzt werden? In deinem Beispiel im Forum ist ein Leerzeichen hinter DC, dann kommen 4 Punkte, dann wieder ein Leerzeichen.
Sind die Punkte jetzt Punkte und die Leerstellen die Leerzeichen oder sollen die Punkte die Leerzeichen symbolisieren, die ersetzt werden sollen?
An welcher Stelle, bei welchem Leerzeichen sollen Tab stehen?
m-o-p hat geschrieben:
Mi, 06.11.2019 18:43
[:space:]{2;} findet nichts
Ersetz das Semikolon durch ein Komma und probier es nochmal.

Wie Flymax schon schrieb stellst Du die Tabs dann in der Absatzvorlage ein. Im einfachsten Fall in der Vorlage "Standard".
Wenn ich dein Beispiel richtig deute, brauchst Du zwei Tabs. Einen für die erste und einen für die zweite Zeile jeweils für die Lücke zwischen DC und kHz-Angabe. Definier also einfach in der Absatzvorlage zwei neue Tabs auf dem Reiter "Tabulatoren". Deren Position kannst Du oben auf dem Lineal ablesen. Bei mir passt 3,5 und 5,3 wenn ich " .... " durch Tabs ersetze - kann bei dir aber anders sein.

m-o-p
*
Beiträge: 10
Registriert: Sa, 22.06.2013 14:45

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von m-o-p » Fr, 08.11.2019 15:00

Hallo Gast Peter,

danke für deine Antwort! Mit Komma statt Semikolon funktioniert die Suche und das Ersetzen. Einen Auszug aus dem Text habe ich angehängt.
Auszug Ersetzen von Leerzeichen durch Tabulatoren.odt
(10.06 KiB) 9-mal heruntergeladen

Gast Peter

Re: Ersetzen von Leerzeichen durch Tabulatoren mit regulären Ausdrücken

Beitrag von Gast Peter » Gestern 10:25

m-o-p hat geschrieben:
Fr, 08.11.2019 15:00
Einen Auszug aus dem Text habe ich angehängt.
Ja guck, und schon sieht das ganz anders aus und ist mit deutlich mehr Aufwand verbunden.

Tabulatoren sind eine Absatzformatierung. Da jede Textzeile in deinem Beispiel mit einer unterschiedlichen Anzahl Leerzeichen beginnt, brauchst du für jede Zeile eine eigene Absatzvorlage. Hört sich aber schlimmer an, als es ist.

Zunächst misst Du für jede Zeile die entsprechenden Tabulatoren ab. Dann mach im Absatzvorlagenfenster auf der Vorlage "Standard" einen Rechtsklick und wähl "Neu" aus. Gib der Vorlage einen aussagefähigen Namen und trag auf dem Register "Tabulatoren" die Tabulatoren ein, die in der ersten Zeile gelten.
Für alle weiteren Zeilen ebenso.

Hast Du alle Vorlagen beisammen, öffne das Suchen und Ersetzen Fenster.
Als Suchbegriff gibst Du die Anzahl der Leerzeichen am Anfang der Zeile ein. Beim ersten Suchvorgang nimmst Du die kleinstmögliche Anzahl und suchst nach

Code: Alles auswählen

^[:space:]{2,}
Ersetzen bleibt leer und wird für diese Aktion nicht gebraucht.
Also nur auf "Suche alle" klicken.
Es werden alle Zeilen markiert, in denen mindestens 2 Leerzeichen am Anfang sind, das macht aber nichts.
Im Formatfenster machst Du jetzt einen Doppelklick auf die Absatzvorlage, die für die lezte Zeile gelten soll.
Fertig. Die Vorlage ist jetzt erstmal allen Absätzen zugewiesen.

Jetzt arbeitest Du nacheinander die übrigen Zeilen ab. Also suche nach mindestens 4,6,8,10 Leerzeichen und jeweils mit Doppelklick den gefundenen Zeilen die für die Anzahl der Leerzeichen geltende Absatzvorlage zuweisen.
Bei 10 Leerzeichen wird dann nur noch eine Zeile markiert und nur noch diese Zeile bekommt dann die letzte Vorlage.

Als nächstes suchst Du nach allen mehrfachen Leerzeichen

Code: Alles auswählen

[:space:]{2,}
und ersezt sie durch Tabs \t.

Zuletzt muss noch der ungewollte Tab in der vorletzten Zeile vor 50 kHz rückgängig gemacht werden.
Suchen nach

Code: Alles auswählen

\.\t}
Ersetzen durch (Punkt Leerzeichen Leerzeichen)

Das wars.

Antworten