AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RegEx Frage

Ein Thema von hansklok · begonnen am 18. Jan 2016 · letzter Beitrag vom 18. Mai 2016
Antwort Antwort
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: RegEx Frage

  Alt 18. Jan 2016, 19:51
Einmal wüst gebastelt:

Code:
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|)(?:@ )?)([\w]+)( [^\n\r]*|)$
Im Prinzip außenrum eine non-Capturing group für die @s, innen drin ein Look-Ahead/Look-Behind

Code:
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([\w]+)( [^\n\r]*|)$
verhindert dann auch noch
Code:
0 @@ Objekt
Durch das
Code:
[^\n\r]*
wird übrigens auch

Code:
0 Referenz Objekt
gematcht.
Sebastian
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#2

AW: RegEx Frage

  Alt 18. Jan 2016, 20:34
Code:
^(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([\w]+)( [^\n\r]*|)$
@SProske: Prima, das macht genau das, was es soll. Vielen lieben Dank Dir und den anderen Beitragenden dafür
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#3

AW: RegEx Frage

  Alt 4. Feb 2016, 02:29
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
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: RegEx Frage

  Alt 4. Feb 2016, 19:09
Könntest du dafür mal ein Beispiel geben, wie der String aussehen sollte und was du in welcher Gruppe matchen willst?
Sebastian

Geändert von SProske ( 4. Feb 2016 um 19:10 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#5

AW: RegEx Frage

  Alt 4. Feb 2016, 20:16
Könntest du dafür mal ein Beispiel geben, wie der String aussehen sollte und was du in welcher Gruppe matchen willst?
Klara, gern
Also mein bisheriges patter schaut so aus:
Code:
(0|[1-9][\d]*) (?:@?((?<=@)[^@]+(?=@)|(?!@))(?:@ )?)([A-Za-z0-9_]+)( [^\n\r]*|)
Beispiele für ein Match sind:
Zitat:
1 NAME Max /Mustermann/
2 DATE 22 APR 2016
Dabei werden "Max /Mustermann/" und "22 APR 2016" durch das Teilpattern
Zitat:
( [^\n\r]*|)
gematcht. Nun gibt es aber Signalwörter wie "FAMS, CHIL oder FAMC" und wenn diese im Teilpattern
Zitat:
([A-Za-z0-9_]+)
auftauchen, dann soll das letzte Pattern nur den Inhalt der @-Zeichen parsen.
Beispiel:
Zitat:
1 FAMC @I123@ // also I123
1 FAMS @I124@ // also I124
1 CHIL @I125@ // also I125
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: RegEx Frage

  Alt 4. Feb 2016, 21:02
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@
Sebastian
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#7

AW: RegEx Frage

  Alt 4. Feb 2016, 21:12
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@
Es gibt einen Standard und da ist eindeutig definiert, dass nach FAMS, FAMC und CHIL ein von @-Zeichen eingeschlossener Wert folgen muss.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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 by Thomas Breitkreuz