Entwickler-Ecke
Basistechnologien - Regex um gültigen Code zu ermitteln
shaun - Fr 26.08.16 18:20
Titel: Regex um gültigen Code zu ermitteln
Hallo zusammen,
ein String Object soll mittels Regex auf Gültigkeit geprüft werden.
Code kann diese Varianten enthalten:
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.
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
Th69: Code-Tags hinzugefügt
Moderiert von
Th69: C#-Tags hinzugefügt
Delete - Fr 26.08.16 18:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
shaun - 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.
Delete - Fr 26.08.16 19:15
- Nachträglich durch die Entwickler-Ecke gelöscht -
shaun - 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 - 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?
Delete - Fr 26.08.16 19:51
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Fr 26.08.16 19:53
Frühlingsrolle war ein bisschen schneller :D
Nach meinem Verständnis, meine Variante vom Pattern:
https://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
Delete - Fr 26.08.16 20:05
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!