Ich versuche, meine Tokenizer arbeiten durch Aufspalten und behalten Trennzeichen wie Semikolon, Klammer, Punkt und doppelte Anführungszeichen.C++ Regex Ausdruck Token Delimiter
string s ("main() a; i, Keyboard.readInt(HOW MANY NUMBERS?);");
regex e ("([.,;-]|[^.,;-]+)");
regex_iterator<std::string::iterator> rit (s.begin(), s.end(), e);
regex_iterator<std::string::iterator> rend;
while (rit!=rend) {
cout << rit->str() << endl;
++rit;
}
Wenn ich es kompiliere, ist es ein bisschen kaputt. Ist etwas falsch mit meiner Regex ([.,;-]|[^.,;-]+)
? Der Ausgang Ich erhalte sieht wie folgt aus:
main() a
;
i
,
Keyboard
.
readInt(HOW MANY NUMBERS?)
;
ich die Ausgabe wie folgt aus der Hoffnung:
main
(
)
a
;
i
,
Keyboard
.
readInt
(
HOW MANY NUMBERS?
)
;
danke. Ich habe es herausgefunden. ([((). ;; -] | [^(). ;; -] +) – lowerbound
Wenn eine Antwort hilfreich ist, geben Sie SO als Antwort "+1" oder "beantwortet" an, damit andere wissen, wo schau, wenn in einer ähnlichen Situation. –