![]() |
RegEx Frage
Hallo,
Ich möchte folgende Textzeile:
Code:
mittels RegEx parsen.
0 @Reference@ Objekt
Dazu verwende ich folgendes Pattern:
Code:
Das funktioniert auch Tip Top, nur würde ich gern beim zweiten Match "(@[^@]+@ |)", dass nur der Inhalt zwischen den @-Zeichen gematcht wird. Inwiefern muss ich das Pattern abändern?
^(0|[1-9]+[0-9]*) (@[^@]+@ |)([A-Za-z0-9_]+)( [^\n\r]*|)$
Herzliche Grüße |
AW: RegEx Frage
Noch paar Klammern
SQL-Code:
/
(@([^@]+)@ |)
SQL-Code:
, (Klammern um das, was man haben will :roll:)
@([^@]+)@ |
oder ein paar Look-Around ![]() |
AW: RegEx Frage
Zitat:
Ich vergas zu erwähnen, dass der von @ eingeschlossene Wert optional ist! Deswegen wird das nichts, indem ich das @ einfach vor und hinter die Klammer setze. |
AW: RegEx Frage
Zitat:
Code:
(oder sowas in der Art).
(@([^@]+)?@ |)
MfG Dalai |
AW: RegEx Frage
Einmal wüst gebastelt:
Code:
Im Prinzip außenrum eine non-Capturing group für die @s, innen drin ein Look-Ahead/Look-Behind
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|)(?:@ )?)([\w]+)( [^\n\r]*|)$
Code:
verhindert dann auch noch
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([\w]+)( [^\n\r]*|)$
Code:
Durch das
0 @@ Objekt
Code:
wird übrigens auch
[^\n\r]*
Code:
gematcht.
0 Referenz Objekt
|
AW: RegEx Frage
Code:
@SProske: Prima, das macht genau das, was es soll. Vielen lieben Dank Dir und den anderen Beitragenden dafür ;)
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([\w]+)( [^\n\r]*|)$
|
AW: RegEx Frage
Hallo,
Eine kleine Frage als Nachtrag: wie muss ich das Pattern abändern, sodass Objekt nach einer Fallentscheidung geparst wird? Wenn Objekt von @-Zeichen umgeben wird, soll es nur den Inhalt, also ohne @-Zeichen Matchen, ansonsten immer den kompletten Inhalt. Beste Grüße |
AW: RegEx Frage
Könntest du dafür mal ein Beispiel geben, wie der String aussehen sollte und was du in welcher Gruppe matchen willst?
|
AW: RegEx Frage
Zitat:
Also mein bisheriges patter schaut so aus:
Code:
Beispiele für ein Match sind:
(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([A-Za-z0-9_]+)( [^\n\r]*|)
Zitat:
Zitat:
Zitat:
Beispiel: Zitat:
|
AW: RegEx Frage
Hast du Möglichkeit, das ganze nachzubearbeiten?
Also einfach die @s wegzudoktorn, wenn in der Gruppe davor eines der Signalwörter auftritt? Das sollte wesentlich einfacher gehen, als das Regex so anzupassen, dass die Signalwörter berücksichtigt werden und dann eine Fallunterscheidung zu machen. Was sollte denn passieren bei:
Code:
1 NAME @Max /Mustermann/@
1 FAMC I123 1 FAMC @I123 1 FAMC I123@ 1 FAMC @I@12@3@ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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