Ich habe eine Reihe regulärer Ausdrücke für eine C# (3.5) ASP.NET-Webanwendung geschrieben. Ich bin keineswegs ein fortgeschrittener Benutzer regulärer Ausdrücke. Ich behebe gerade ein Problem, bei dem ich völlig verwirrt bin und nicht weiß, warum es nicht funktioniert. Vor allem, weil ich ähnliche habe, die gut funktionieren.
Hier sind die Details. Vielen Dank für Ihre Zeit und freundliche Unterstützung.
Meine Anwendung akzeptiert zwei einzelne Werte. Wenn die beiden Werte zusammen einem vordefinierten Regelsatz entsprechen, werden sie einem bestimmten Wert zugeordnet.
Einige der Regeln habe ich als solche definiert (Hinweis: Diese sind nur von mir erfunden und haben keine Programmierbedeutung oder -bedeutung):
Element 1: Cxxxx*####
Element 2: Czzzz*####
Für Element 1:
Das bedeutet, dass diese Sequenz mit „C“ beginnen muss. Die nächsten 4 Zeichen (die vier X) sind alphanumerisch. Das Sternchen bedeutet, dass es „R“ oder „D“ sein kann. Die #-Symbole bedeuten, dass es sich um eine Folge von vier beliebigen alphanumerischen Zeichen handeln kann.
Für Element 2:
Das bedeutet, dass diese Sequenz mit „C“ beginnen muss. Die nächsten 4 Zeichen (die vier Z) sind alphanumerisch. Das Sternchen bedeutet, dass es „R“ oder „D“ sein kann. Die #-Symbole bedeuten, dass es sich um eine Folge von vier beliebigen alphanumerischen Zeichen handeln kann.
Zwischen den beiden Elementen bedeuten die X und Z einfach, dass die 4-Zeichenfolge nicht gleich sein kann. Es muss zwischen den beiden eindeutig sein.
Diese beiden Elemente verstoßen also gegen die Regel, da sich „1491“ an derselben Stelle in der Sequenz wiederholt.
Element 1: C1491D1234
Element 2: C1491D5678
Dieses würde true zurückgeben, da es angesichts der Regeln der Sequenz in Ordnung sein sollte:
Element 1: C1491D1234
Element 2: C1599D5678
Dieses würde true zurückgeben, da es angesichts der Regeln der Sequenz in Ordnung sein sollte:
Element 1: C1491D1234
Element 2: C1599D1234
Dies ist der reguläre Ausdruck, den ich zum Erstellen dieser Regel verwende:
C([A-Za-z0-9]{4})[DdRr][A-Za-z0-9]{4}-C(?!\1)[DdRr][A-Za-z0-9]{4}
Dies sind die beiden Elemente, die ich zum Testen der Bedingung verwende:
Element 1: C1491D1491
Element 2: C1000R4100
Aus irgendeinem Grund ist mein regulärer Ausdruck falsch und gibt nicht „true“ zurück.
So sieht mein C#-Programm die Sequenz: C1491D1491-C1000R4100
Ich habe diese Website zum Testen verwendet:
http://regexhero.net/tester/
Der reguläre C#-Ausdruck wird nicht richtig ausgelöst ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post
Mobile version