2012-03-30 7 views
0

Ich versuche, den Eingang '3a' für regex '[_a-zA-Z][_a-zA-Z0-9]*' mit dieser Quelle zu überprüfen:Delphi TRegEx Fehler?

len := TRegEx.Create([_a-zA-Z][_a-zA-Z0-9]*).Match('3a').Length; 

Ich erwartete 0 für len variabel, aber es war 2. Ist das korrekt?

Antwort

1

Dies ist nicht Ihr richtiger Code. Für den Anfang kompiliert es nicht. Sie haben die Anführungszeichen weggelassen. Wenn wir das beheben, dann haben wir:

Aber das gibt einen Wert von 1 und nicht 2, wie Sie angegeben. Dieser Rückgabewert ist korrekt, da a mit [_a-zA-Z] übereinstimmt und dann die Eingabezeichenfolge endet.

Ich erwarte, dass Sie die falsche Regex haben. Vielleicht sollten Sie

^[_a-zA-Z][_a-zA-Z0-9]*$ 

Die ^ entspricht dem Anfang der Eingabezeichenfolge verwendet werden, mathes die $ das Ende. Vermutlich stammt die Eingabe von einem Quellcode-Tokenizer.

Also die Schlussfolgerung ist, dass es keinen Fehler im Delphi-Regex-Code aus diesem Muster und Eingabe gibt.

+10

Sobald ich ein Problem hatte und dachte "Hey, ich kann Reguläre Ausdrücke verwenden, um dieses Problem zu lösen". Dann hatte ich zwei Probleme. –

Verwandte Themen