Der reguläre C#-Ausdruck wird nicht richtig ausgelöstC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Der reguläre C#-Ausdruck wird nicht richtig ausgelöst

Post by Anonymous »

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/

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post