Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Regulären Ausdruck (https://www.delphipraxis.net/176155-regulaeren-ausdruck.html)

Helmi 15. Aug 2013 11:55

Regulären Ausdruck
 
Hallo,

ich hab ein kleines Problem mit Regulären Ausdruck

Ich habe folgenden (Beispiel-)Text:
Zitat:

700255 0 0 "0: Das ist ein Text [H24]"
Und ich möchte nun die Nummer mit der 7 voraus auslesen und den Text zwischen den zwei Anführungszeichen.
Wobei, wenn in dem Text, wie hier z. B. ein 0: steht, dann erst nach dem nächsten Leerzeichen nach dem Doppelpunkt.

Dazu hab ich folgenden Regulären Ausdruck:
Delphi-Quellcode:
RegEx.RegEx := '(7\d{5}) 0 0 "\d$:$ (\w+)"';
Die Nummer (also im Beispiel: 700255) bekomm ich raus, den Text aber nicht.

Was ist am Ausdruck falsch?

jfheins 15. Aug 2013 12:16

AW: Regulären Ausdruck
 
\w sind nur Buchstaben und der Unterstrich. Leerzeichen sind da nicht mit drin.
Folgender Ausdruck sollte funktionieren:
Code:
(7\d{5}) 0 0 "(?:\d: )?([\w\s\[\]]+)"
Das in der Mitte ist eine non-capturing group. Getestet hab' ich es hier: http://regexpal.com/

Helmi 15. Aug 2013 12:26

AW: Regulären Ausdruck
 
Danke für den Ausdruck

Nur habe ich auch Texte ohne der eckigen Klammer innerhalb des Textes und auch ohne der 0:, bzw. es können auch Texte nach den eckigen Klammern stehen.

Z. B. auch so was hier:
Zitat:

700023 0 0 "Das ist ein Text [N11/12] [C1] Text"
Schön wärs wenn es was gäbe um alles zwischen den Anführungszeichen auslesen zu können, egal was da steht

Volker Z. 15. Aug 2013 13:39

AW: Regulären Ausdruck
 
Hallo,

vielleicht tut es ja folgender Ausdruck:
Code:
7\d{5} 0 0 ".*"
Gruß

Helmi 15. Aug 2013 13:56

AW: Regulären Ausdruck
 
ja - der tuts Danke :-)

Helmi 15. Aug 2013 14:29

AW: Regulären Ausdruck
 
Ich hab nun diesen Ausdruck:
Zitat:

(7\d{5}) 0 0 "[\d:]?(.*)"
funktioniert ganz gut, bis auf Texte die mit einer Zahl und Doppelpunkt:
Zitat:

"4:Text"
Als Ergebnis vom Ausdruck erhalte ich dann
Zitat:

:Text
Wie bekomm ich den Doppelpunkt weg?

Volker Z. 15. Aug 2013 14:43

AW: Regulären Ausdruck
 
Hallo,

Du kannst mal folgenden Ausdruck versuchen:
Code:
(7\d{5}) 0 0 "(\d:)?(.*)"
Gruß

Helmi 15. Aug 2013 14:50

AW: Regulären Ausdruck
 
Danke! - so funktionierts


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.

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