[gelöst] Frage zu Regexpr

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

[gelöst] Frage zu Regexpr

Beitrag von MacWomble »

Hallo,

ich versuche den String

Code: Alles auswählen

Bitte geben Sie eine #[Memo]Beschreibung# ein

zu zerlegen.
Es funktioniert hiermit

Code: Alles auswählen

#\[(.+?)\](.+?)#

und ich erhalte:
`#[Memo]Beschreibung#`
`Memo`
`Beschreibung`

Mein Problem ist nun, dass mit der selben Expression auch der folgende String erkannt werden soll:

Code: Alles auswählen

Bitte geben Sie eine #Beschreibung# ein

Ergebins soll dan wie folgt sein:
und ich erhalte:
`#Beschreibung#`
``
`Beschreibung`

Ist das möglich?
Zuletzt geändert von MacWomble am So 2. Sep 2018, 23:44, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Frage zu Regexpr

Beitrag von Socke »

In deiner Regex beziehen sich die Fragezeichen (?) immer auf den Inhalt der eckigen Klammern oder der #-Zeichen.
So würde sogar '##' als gültig erkannt werden.

Du musst für die eckigen Klammern eine eigene, optionale Gruppe angeben:

Code: Alles auswählen

#(\[(.+?)\])?(.+?)#

Das Ergibt:

Code: Alles auswählen

Bitte geben Sie eine #[Memo]Beschreibung# ein
0. #[Memo]Beschreibung#
1. [Memo]
2. Memo
3. Beschreibung

bzw.

Code: Alles auswählen

Bitte geben Sie eine #Beschreibung# ein
0. #Beschreibung#
1.
2.
3. Beschreibung

Hilfreich ist auch https://regex101.com/ zum Live-Testen der Regulären Ausdrücke.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Frage zu Regexpr

Beitrag von MacWomble »

Super, vielen Dank !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten