Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hilfe bei RegEx gesucht (https://www.delphipraxis.net/204529-hilfe-bei-regex-gesucht.html)

CG2003 4. Jun 2020 07:28

Hilfe bei RegEx gesucht
 
Hallo zusammen,

ich benötige bitte einmal Hilfe bei einer RegEx.

Ich habe folgenden String:

Code:
[8018]406471600123456780

Nun möchte ich alle Zeichen nach

Code:
[8018]4064716

erhalten, allerdings nur begrenzt auf 6 Stellen, so dass ich

Code:
001234
erhalte.


Ich habe hier irgendwie keine Idee wie ich das realisieren kann.

Moombas 4. Jun 2020 07:50

AW: Hilfe bei RegEx gesucht
 
Blöde Fragen, da aus deiner nicht ersichtlich:
  • Musst du das einmal machen oder mehrfach?
  • Gibt es verschiedene Strings, so das der vordere Teil auch identifiziert werden muss?
  • Muss es unbedingt RegEx sein?

CG2003 4. Jun 2020 07:56

AW: Hilfe bei RegEx gesucht
 
Hallo,

ja es muss leider RegEx sein.

Ein kompletter String kann folgendermaßen aussehen:

Code:
[8018]406471600123456780[414]4064716123456[253]4064716123456ABCDEFGHIJKLMNOPQ
Er kann aber auch so aussehen (Reihenfolge kann sich ändern):

Code:
[414]4064716123456[8018]406471600123456780[253]4064716123456ABCDEFGHIJKLMNOPQ
Daher muss ich meine Werte immer anhand der Identifizierer (die Werte in den eckigen Klammern) auslesen.


Ziel vom ersten Beispiel hier müsste folgendess sein (können auch drei verschiedene Aufrufe sein):

Code:
00123456780
Code:
123456
Code:
123456ABCDEFGHIJKLMNOPQ
Wichtig wäre mir "nur" ein Aufruf wie

Suche mir "[8018]" und gebe mir danach alle x Zeichen aus.

Der schöne Günther 4. Jun 2020 09:09

AW: Hilfe bei RegEx gesucht
 
Übersehe ich etwas, oder ist es nicht einfach nur
Code:
\[8018\]4064716(.{6})
?

himitsu 4. Jun 2020 09:40

AW: Hilfe bei RegEx gesucht
 
Jo, wenn er das Ergebnis aus einer CaptureGroup (der Ersten) nimmt,
ansonsten kommt der erste Teil einfach in einen Lookahead rein.

Eventuell auch noch \d bzw [0-9] für die Ziffern, falls die nicht exakt sein sollen.

Moombas 4. Jun 2020 09:45

AW: Hilfe bei RegEx gesucht
 
@Günther: Dann wäre das Ergebnis doch "001234" oder nicht? Ich selber kenne mich mit RegEx nicht so gut aus und mache so etwas in der Regel mit String splitting-Routinen. Da hier aber auf RegEx bestanden wird lasse ich es außen vor.

Wenn dein RegEx passt müsste so aussehen:
\[8018\]4064716(.{8}) -> 00123456
Den String dann um die vorderen Zwei Stellen kürzen -> 123456 //Frage: Müssen immer die ersten beiden Stellen gekürzt werden oder nur wenn sie "0" sind? RegEx: [1-9]{6}
Und den "Text" anhängen -> 123456ABCDEFGHIJKLMNOPQ //Frage: Ist der Text veränderlich und muss ausgelesen werden? Wenn ja: Immer die gleiche Länge oder sonst ein Merkmal? RegEx: ([A-Z])\w+

Der schöne Günther 4. Jun 2020 10:09

AW: Hilfe bei RegEx gesucht
 
Zitat:

Zitat von Moombas (Beitrag 1466342)
@Günther: Dann wäre das Ergebnis doch "001234" oder nicht?

Ja, ist es. Ich dachte, das wolltest du?

Kennst du
www.regexr.com
oder
www.regex101.com?

Da kann man super herumspielen, da kommt man eigentlich immer schnell zum Ziel.

Moombas 4. Jun 2020 10:29

AW: Hilfe bei RegEx gesucht
 
Wieso ich? ^^ Bin nicht der TE :P

Er wollte ja die 123456 ohne die führenden Nullen.

CG2003 4. Jun 2020 10:49

AW: Hilfe bei RegEx gesucht
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1466334)
Übersehe ich etwas, oder ist es nicht einfach nur
Code:
\[8018\]4064716(.{6})
?

Danke, das hat mich schon auf den richtigen Weg gebracht.

Auch allen anderen vielen Dank für die Antworten!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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