Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regulärer Ausdruck: Notepad++ -> Delphi (https://www.delphipraxis.net/172406-regulaerer-ausdruck-notepad-delphi.html)

Notxor 1. Jan 2013 17:19

Regulärer Ausdruck: Notepad++ -> Delphi
 
Frohes neues Jahr allerseits!

Ich bin auf der Suche nach einem Regulären Ausdruck, der mir folgende Struktur aufteilen kann.
Die Aufteilung sollte so sein, dass min. 1 Zeile mit der Nummer im Block vorkommt (also beispielsweise immer der Text zwischen den Leerzeilen, dass dann eine Zeile mit der falschen Nummer dabei ist stört nicht)
Delphi-Quellcode:
Game #0001010010101 starts.
// empty
#Game No : 0001010010101 
text
text
Game #9871010010101 starts.
// empty
#Game No : 9871010010101 
text
keine leerzeile
text
noch mehr text
// empty
In Delphi verwende ich zZ. die TPerlRegEx, mit der Option [preSingleLine].

Zum Testen der RegExps verwende ich Notepad++, wobei mir der RegEx '(#Game No : \d+)(.+?)(^$)' ein korrektes Ergebnis liefert.
Verwende ich diesen jedoch in Delphi, liefert er keinen Treffer.
Welche Eigenschaften der TPerlRegEx müsste man setzen, damit es auch in Delphi funktioniert?

'(Game #\d+ starts\.)(.+?)(?=Game #\d+ starts\.)' funktioniert in Delphi, findet aber (klarerweise) den letzten Eintrag nicht.

Wäre dankbar für Vorschläge welche Optionen ich setzten müsste, oder auch für einen alternativen RegEx.

Vielen Dank!

BUG 1. Jan 2013 18:54

AW: Regulärer Ausdruck: Notepad++ -> Delphi
 
Frohes nNeues!

Auf dem ersten Blick würde ich sagen, dass die Option
Delphi-Quellcode:
preMultiLine
fehlt.

Delphi-Quellcode:
//...
  preMultiLine,     // /m -> ^ and $ also match before/after a newline, not just at the beginning and the end of the string
// ...

Notxor 1. Jan 2013 20:05

AW: Regulärer Ausdruck: Notepad++ -> Delphi
 
preMultiLine hatte ich auch schon probiert.
Dabei wird dann entweder alles oder nur die erste Zeile gefunden (je nachdem ob [preUnGreedy] gesetzt ist oder nicht)

BUG 1. Jan 2013 20:18

AW: Regulärer Ausdruck: Notepad++ -> Delphi
 
Zitat:

Zitat von Notxor (Beitrag 1197310)
Dabei wird dann entweder alles oder nur die erste Zeile gefunden (je nachdem ob [preUnGreedy] gesetzt ist oder nicht)

Mhm, das macht Sinn :|

Wie funktioniert es mit [preSingleLine] und
Code:
(Game #\d+ starts\.)(.+?)($|(?=Game #\d+ starts\.))

Notxor 1. Jan 2013 20:34

AW: Regulärer Ausdruck: Notepad++ -> Delphi
 
Ja funktioniert, vielen Dank!
So etwas in der Richtung hatte ich schon probiert, allerdings in Notepad++.
Interessanterweise funktioniert dieser RegEx da nicht, da wird immer nur die erste Zeile gefunden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz