[gelöst] Frage zu Regexpr

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

[gelöst] Frage zu Regexpr

Beitragvon MacWomble » 2. Sep 2018, 20:12 [gelöst] Frage zu Regexpr

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 2. Sep 2018, 22:44, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Socke » 2. Sep 2018, 21:00 Re: Frage zu Regexpr

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
Socke
 
Beiträge: 2557
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon MacWomble » 2. Sep 2018, 22:43 Re: Frage zu Regexpr

Super, vielen Dank !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried