Regular Expression für Strings

PhilippGer

Mitglied
Hallo.
Ich brauche eine Regular Expression, die Strings erkennt.

Idee dazu ist:
Strings fangen mit Quotes an und hören mit ihnen auf. Alle Quotes in einem String haben \ vorangestellt um sie zu escapen.

Also kam ich zu folgender Expression:
Code:
\"(\\.|[^\"])*\"
Entweder ein \ gefolgt von jedem beliebigen Zeichen oder jedes Zeichen außer ".

Diese Expression müsste ja dann den Ausdruck \" matchen!
Tut sie aber nicht...
Code:
const boost::regex regex_expression( "\"((\\.)|[^\"])*\"" );
std::string str = "\\\"";
boost::regex_match( str, regex_expression);

Mache ich da irgendetwas falsch?
 
Hi.

Um einen Backslash in einem reg. Ausdruck zu matchen, mußt du ihn doppelt escapen:

1. weil er Teil eines Stringliterals ist
2. weil ein Backslash auch ein Escapezeichen in reg. Ausdrücken ist.

Du mußt also vier Backlashes schreiben.

Gruß
 
Danke^^

Hatte es ind er Zwischenzeit auch gemerkt.. kaum postet man sowas irgendwo, findet man auch selbst den Fehler..

Danke für die schnelle Hilfe :)
 
Zurück