Forum: Algorithmen, Datenstrukturen und Klassendesign
by SProske,
4. Feb 2016
So langsam wird es kompliziert :)
Probier mal:
(0|*)\h+(?:@?((?<=@)+(?=@)|(?!@))(?:@\h+)?)(?<Special>FAM|CHIL)?(?(Special)|(?<NoSpecial>\w+))(?(Special)\h+@(*|)@|\h*(*|))
Im Prinzip prüfe ich, ob es einen deiner Specialfälle gibt, dann wird der gematcht - sonst das normale Verfahren. Und das nochmal für den Inhalt. Leider erzeugt Delphi im Match-Objekt einige eigentlich nicht vorhandene...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by SProske,
4. Feb 2016
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:
1 NAME @Max /Mustermann/@
1 FAMC I123
1 FAMC @I123
1 FAMC...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by SProske,
4. Feb 2016
Könntest du dafür mal ein Beispiel geben, wie der String aussehen sollte und was du in welcher Gruppe matchen willst?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by SProske,
18. Jan 2016
Einmal wüst gebastelt:
^(0|*) (?:@?((?<=@)+(?=@)|)(?:@ )?)(+)( *|)$
Im Prinzip außenrum eine non-Capturing group für die @s, innen drin ein Look-Ahead/Look-Behind
^(0|*) (?:@?((?<=@)+(?=@)|(?!@))(?:@ )?)(+)( *|)$
verhindert dann auch noch
0 @@ Objekt