Autor Beitrag
shaun
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 26.08.16 18:20 
Hallo zusammen,

ein String Object soll mittels Regex auf Gültigkeit geprüft werden.

Code kann diese Varianten enthalten:
ausblenden Quelltext
1:
2:
[int][A][int] & evtl. mehrere weitere Stellen [,][int] +[;]
Bsp.: 7A1; 8A3; 9A2,4; 11A1,2; 14A1; 15A2; 16A1;

Habe mich mit Regex bisher nicht befasst und habe bisher nur das zustandegebracht.
ausblenden C#-Quelltext
1:
new Regex(@"([0-9][A][0-9])")					

Das Ergebnis ist aber keine zuverlässige Prüfung. Kann mir jemand`von euch einen Tip geben ?

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 18:35 
- Nachträglich durch die Entwickler-Ecke gelöscht -
shaun Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 26.08.16 18:43 
Hallo Frühlingsrolle,

gültig sollte folgende Eingaben sein:

4A2;
2A3,3;
18A7,4,5;
19A1; 8A5,2;
20A2; 21A1,5,4;

...und das ganze beliebig hintereinander.

Nicht gültig sollten irgendwelche anderen Buchstaben / Sonderzeichen sein:
4B1.2
4B1 2
oder irgendein anderer Text der irrtümlich aus dem Clipboard eingefügt werden könnte -
und nicht dem oben genannten Format entspricht.
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138
Erhaltene Danke: 21

Win 11 x64
C# (VS 2022 - Rider)
BeitragVerfasst: Fr 26.08.16 19:11 
Hallo Shaun,

leider kann ich aus deinen gültigen und ungültigen Beispielen kein Muster erkennen allerdings kann ich dir folgendes Tut zu Regex empfehlen was dich an dein Ziel bringen sollte.

_________________
the quiter you become, the more you are able to hear
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 19:15 
- Nachträglich durch die Entwickler-Ecke gelöscht -
shaun Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 26.08.16 19:33 
Das Tut habe ich mir gestern erst angesehen - verstehe aber ehrlich gesagt viel nicht. Schande über mich.

Das Pattern erlaubt im Augenblick noch Fehleingaben wie 3A,,2;;


Zur Erklärung - warum das ganze:

Es gibt eine List<ModulClass> mit sagen wir 20 Einträgen.
Jede ModulClass enthält eine Propety List<actions> in der
eine Variable Anzahl an Actions(Strings) stehen.

Ich versuche einen IndexCode zu generieren - bzw. diesen in
eine List<ModulClass> umzuwandeln.

Ein bereits vorhandener Code wird vom User eingegeben.
Diesen möchte ich darauf prüfen, ob es sich auch um einen wirklich
auswertbaren Code im Format x[A][x],?[x]; handelt.

Ich hoffe das war einigermaßen verständlich :)
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Fr 26.08.16 19:50 
Also die Format-Definition x[A][x],?[x]; kenne ich so nicht :D

Es sieht aber so aus, dass:

  • Zu Beginn eine beliebige positive Zahl stehen darf
  • Nach dieser Zahl darf ein A folgen, auf das wiederum eine beliebige positive Zahl folgt
  • Nach den obigen zwei Punkten darf eine beliebige Anzahl positiver Zahlen folgen, die durch ein Komma abgetrennt werden.

Sehe ich das richtig so?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 19:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Fr 26.08.16 19:53 
Frühlingsrolle war ein bisschen schneller :D

Nach meinem Verständnis, meine Variante vom Pattern:

regex101.com/r/dD9oE7/2

PS:
Das Pattern matcht aktuell jeden validen Code, auch wenn er in einem invaliden Code liegt.
Das ließe sich einfach umgehen, wenn Du auf das Semikolon splittest und dann folgendes Pattern verwendest:

^\s*\d+(?:A\d+)?(?:,\d+)*\s*$

Das prüft dann ob der vollständige String genau einen Code enthält - ohne Semikolon, Leerzeichen vor und danach sind erlaubt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 20:05 
- Nachträglich durch die Entwickler-Ecke gelöscht -