Seite 1 von 1

Bitte dringend um Hilfe. Suche mit regulärem Ausdruck

Verfasst: Mo, 06.08.2007 18:34
von l3onidas
Hallo,

ich muss in einer LaTex-Datei bestimmte Ausdrücke finden und löschen.
Ich dachte, das geht mit „Suche nach regulären Ausdrücken“ mit OO Writer. Und ich denke auch immer noch, dass das geht. Aber ich komm nicht weiter.

Es geht um folgendes: Ein Text wie etwa:

„Natürlich weiß ich, daß ich damit in gefährliche Nähe zu den großen Autoren von \glossary{Voltaire}Voltaire und \glossary{Herder}Herder bis \glossary{Comte}Comte und \glossary{Hegel}Hegel gerate. Allein die Macht der \index{Probleme}Probleme ist so groß und mitreißend, daß die Furcht vor dem Wettbewerb mit solchen hohen \index{Autoritäten}Autoritäten -- sie sind solche auch für diejenigen, die ihre Fetische zu prügeln pflegen -- nicht zurückschrecken darf. Auch sind von der historischen wie von der philosophischen Seite die Voraussetzungen heute so stark verändert worden, daß die Probleme neu aufgeworfen werden \emph{müssen}. Der Zusammenhang mit jenen großen Meistern bleibt trotzdem stark genug. Immerhin ist die Problemverschiebung gründlich: an Stelle der auf \index{Natur-, Geistes- oder Weltgesetze}Natur-, Geistes- oder Weltgesetze begründeten \index{Teleologie!objektiven}objektiven Teleologie und \index{Kontemplation}Kontemplation des Gesamtverlaufes der \index{Menschheit}Menschheit tritt die \seite{B~VIII} vom \index{Subjekt}Subjekt her zu schaffende \index{gegenwärtige Kultursynthese des Europäismus}gegenwärtige Kultursynthese des Europäismus, allerdings auf dem Untergrunde einer \index{Universalgeschichte des Europäismus}Universalgeschichte des Europäismus und im Rahmen eines Bildes der \index{Gesamtmenschheit}Gesamtmenschheit, soweit das letztere überhaupt möglich ist.“


- Ich will alle \index{xyz in beliebiger Anzahl xyz} finden und einfach löschen. Also \index{beliebige Zeichenfolge}. Also dieses \index{irgendwas} soll als Latex-Befehl weg, das ist ein Befehl für das Sachregister, und da ist was schiefgelaufen, das muß neu gemacht werden, also das alte erst weggehauen ;-)

Wenn ich das in Writer etwa mit \\index{.*} suche kriege ich immer zuviel als Treffer. In obigem Text etwa

\index{Probleme}Probleme ist so groß und mitreißend, daß die Furcht vor dem Wettbewerb mit solchen hohen \index{Autoritäten}Autoritäten -- sie sind solche auch für diejenigen, die ihre Fetische zu prügeln pflegen -- nicht zurückschrecken darf. Auch sind von der historischen wie von der philosophischen Seite die Voraussetzungen heute so stark verändert worden, daß die Probleme neu aufgeworfen werden \emph{müssen}. Der Zusammenhang mit jenen großen Meistern bleibt trotzdem stark genug. Immerhin ist die Problemverschiebung gründlich: an Stelle der auf \index{Natur-, Geistes- oder Weltgesetze}Natur-, Geistes- oder Weltgesetze begründeten \index{Teleologie!objektiven}objektiven Teleologie und \index{Kontemplation}Kontemplation des Gesamtverlaufes der \index{Menschheit}Menschheit tritt die \seite{B~VIII} vom \index{Subjekt}Subjekt her zu schaffende \index{gegenwärtige Kultursynthese des Europäismus}gegenwärtige Kultursynthese des Europäismus, allerdings auf dem Untergrunde einer \index{Universalgeschichte des Europäismus}Universalgeschichte des Europäismus und im Rahmen eines Bildes der \index{Gesamtmenschheit}

statt nur:

\index{Probleme}

Was ich eigentlich nur will.
Woran liegt das? Was mache ich falsch?

Re: Bitte dringend um Hilfe. Suche mit regulärem Ausdruck

Verfasst: Mo, 06.08.2007 19:59
von Eia
Ich sehe zwei Probleme: die Ausdrücke, die Du für die Suche brauchst, sind durch Zeichen begrenzt, welche in reg.expr. bestimmte Bedeutungen haben und die Tatsache, dass bei einer Suche .* immer bis zu einem Absatzende gesucht wird, daher die langen Fundstellen, die sich über mehrere Suchausdrücke erstrecken.

Das erste Problem ist relativ einfach zu lösen, man muss die Zeichen "maskieren":
statt nach { sucht man nach \{, statt nach \ sucht man nach \\...

Das mit der Länge der Fundstellen ist happger. In einem Durchgang schaffe ich es auch nicht, aber in mehreren:
  • Zuerst alle Absatzenden "retten":
    Suche nach: $, ersetzen durch: @ (oder sonst ein Zeichen oder eine Zeichenfolge, die so im Dokument nicht vorkommt)
  • alle } mit einem Absatzende abschliessen:
    suche nach: \}, ersetzen durch: &\n (das Zeichen vor dem \ ist ein kaufmännisches Und)
  • Jetzt die Ausdrücke löschen:
    Suchen nach: \\.*\}, ersetzen durch: (nichts)
  • Die überflüssigen Absatzenden löschen:
    Suchen nach: $, ersetzen durch: (nichts)
  • Die geretteten Absatzenden wieder herstellen:
    Suchen nach: @, ersetzen durch: \n
Achtung: es gibt eine Maximalgrösse für Absätze von 65534 Zeichen. Wenn beim ersten Punkt gefahr besteht, dass diese Grösse überschritten wird, musst Du in mehreren Schritten vorgehen, entweder, indem Du das Dokument auf mehrere verteilst oder indem Du Bereiche markierst und dann nur jeweils innerhalb der Markierung suchen+ersetzen durchführst

mfG

Re: Bitte dringend um Hilfe. Suche mit regulärem Ausdruck

Verfasst: Mo, 06.08.2007 20:00
von Eia
Eia hat geschrieben:Ich sehe zwei Probleme: die Ausdrücke, die Du für die Suche brauchst, sind durch Zeichen begrenzt, welche in reg.expr. bestimmte Bedeutungen haben und die Tatsache, dass bei einer Suche .* immer bis zu einem Absatzende gesucht wird, daher die langen Fundstellen, die sich über mehrere Suchausdrücke erstrecken.

Das erste Problem ist relativ einfach zu lösen, man muss die Zeichen "maskieren":
statt nach { sucht man nach \{, statt nach \ sucht man nach \\...

Das mit der Länge der Fundstellen ist happiger. In einem Durchgang schaffe ich es auch nicht, aber in mehreren:
  • Zuerst alle Absatzenden "retten":
    Suche nach: $, ersetzen durch: @ (oder sonst ein Zeichen oder eine Zeichenfolge, die so im Dokument nicht vorkommt)
  • alle } mit einem Absatzende abschliessen:
    suche nach: \}, ersetzen durch: &\n (das Zeichen vor dem \ ist ein kaufmännisches Und)
  • Jetzt die Ausdrücke löschen:
    Suchen nach: \\.*\}, ersetzen durch: (nichts)
  • Die überflüssigen Absatzenden löschen:
    Suchen nach: $, ersetzen durch: (nichts)
  • Die geretteten Absatzenden wieder herstellen:
    Suchen nach: @, ersetzen durch: \n
Achtung: es gibt eine Maximalgrösse für Absätze von 65534 Zeichen. Wenn beim ersten Punkt gefahr besteht, dass diese Grösse überschritten wird, musst Du in mehreren Schritten vorgehen, entweder, indem Du das Dokument auf mehrere verteilst oder indem Du Bereiche markierst und dann nur jeweils innerhalb der Markierung suchen+ersetzen durchführst

mfG

Re: Bitte dringend um Hilfe. Suche mit regulärem Ausdruck

Verfasst: Mo, 06.08.2007 20:50
von Stephan
Wenn ich das in Writer etwa mit \\index{.*} suche kriege ich immer zuviel als Treffer

\\index{[^}]+}



Gruß
Stephan

Re: Bitte dringend um Hilfe. Suche mit regulärem Ausdruck

Verfasst: Mo, 06.08.2007 21:03
von Eia
Stephan hat geschrieben:\\index{[^}]+}
[^}]+

Das ist genial einfach!

Danke!

Verfasst: Mo, 06.08.2007 21:36
von l3onidas
Hallo Stephan!

Superklasse! Danke!

Eia: Auch Danke.

Gruß,

l.