2011-01-17 9 views
0

Ich habe eine Funktion zur Überprüfung, ob die eingegebene Zeile "OK" ist.Reguläre Ausdrücke passend

#include <tr1/regex> 

bool lineIsValid(string line) { 
    const tr1::regex pattern("[^-]{1,30} - [^-]{1,30}"); 
    return tr1::regex_match(line, pattern); 
} 

lineIsValid("test - test"); 

Die Funktion gibt false zurück. Warum?

+0

Das passt gut für mich. Sind Sie sicher, dass Ihre Eingabe identisch ist mit dem, was Sie hier gepostet haben? – JaredC

+0

mathces mit mir auch ... – CSharpenter

+0

Ya Ich habe nur kopiert und eingefügt Ihren Code und ich werde wahr, überprüfen Sie, dass Ihre Eingabe korrekt ist. – DeusAduro

Antwort

2

Vielleicht ist die Syntax in Ordnung, aber hängt von der Implementierung ab. Überprüfen Sie diese post.

Oder this:

Nach einer weiteren Untersuchung, ich (wir) haben, dass die Framework von Microsoft Visual Studio 2008 [und einige sehr frühe Versionen von Visual Studio 2010] ist fehlerhaft geliefert TR1 bestimmt, was macht mich wundern, warum die anderen Regex von Dinkumware geliefert werden, sind nicht fehlerhaft. Oder sind sie?

+0

+1 für das Graben – JaredC

0

Ich hätte gedacht, dass sollte übereinstimmen.

Gibt es möglicherweise einen Fehler bei der Implementierung der tr1-Bibliothek? Vielleicht wird es mit dem "-" verwechselt, das als Bereichsangabe verwendet wird.