Seite 1 von 1

[gelöst] RegExp: Regulärer Ausdruck zu gierig

Verfasst: Di, 22.09.2020 23:30
von Hiker
Hallo,

Ich bekomme regelmäßig Texte mit durch {} markierten Sequenzen und möchte diese Sequenzen durch Fettdruck hervorheben.
Z.B.:

Code: Alles auswählen

Text {Eins} Text {Zwei Zwei } Text {Dreierlei} Text {Vier Vier Vier Vier} Text

Es gibt keine Beschränkung bei den Bestandteilen, die Hervorhebungen können so Kurz wie a) sein oder auch einen kompletten Satz
bilden. Einzige Regel ist: Die Elemente sind NICHT verschachtelt und {} kommt sonst nicht vor.

Eigentlich lässt sich das einfach mit einem regulären Ausdruck suchen: \{(.*)\} und durch $1 bei Format = fett ersetzen.
Allerdings ist der Ausdruck zu gierig und macht alles von {Eins bis Vier} fett:
Text Eins} Text {Zwei Zwei } Text {Dreierlei} Text {Vier Vier Vier Vier Text
Das gewünschte Ergebnis wäre:
Text Eins Text Zwei Zwei Text Dreierlei Text Vier Vier Vier Vier Text
Ich weiß daß es z.B. in Perl die Möglichkeit gibt auf non-greedy umzuschalten, habe aber bei Open/LibreOffice
nichts davon gelesen. Kennt jemand eine entsprechende Möglichkeit oder ein eleganteres Workaround als einen
Export nach Perl?

MfG, Jörn

Re: RegExp: Regulärer Ausdruck zu gierig

Verfasst: Mi, 23.09.2020 00:00
von Hiker
... die Umschaltmöglichkeit habe ich zwar nicht gefunden,
aber als Workaround funktioniert das Suchmuster

Code: Alles auswählen

\{([^\}]*)\}

also "Klammer auf" gefolgt von beliebig vielen "nicht Klammer zu" und einem "Klammer zu".

Ich lasse die Frage noch ein bischen offen. Eventuell fällt ja noch jemandem was
schlaueres ein...

mfg, Jörn

Re: RegExp: Regulärer Ausdruck zu gierig

Verfasst: Mi, 23.09.2020 05:43
von miesepeter
Hi Jörn,

Code: Alles auswählen

\{.*?\}

Re: [gelöst] RegExp: Regulärer Ausdruck zu gierig

Verfasst: Mi, 23.09.2020 08:24
von Hiker
Merci beaucoup.

Das Fragezeichen hatte ich nur noch für Einstellungen wie (?i auf der Rechnung...

Mfg, Jörn