regex für Zahlen von 10.00 bis 999.99
-
Hi,
ich kenne mich mir Regex noch nicht wirklich gut aus. Ich will Zahlen von 10.00 bis 999.99 finden. Dazu benutze ich
([0-9]{2,3}\.[0-9]{2}). Wieso findet er mit diesem Pattern auch Zahlen, die gar keinen Punkt enthalten? Das verstehe ich nicht. Kann es mir jemand erklären?
#include <iostream> #include <string> #include <regex> int main () { string test = "567505675"; smatch sm; regex r( "([0-9]{2,3}\.[0-9]{2})" ); regex_search( test, sm, r ); for( auto x : sm ) cout << x << '\n'; }Danke im Voraus.
-
Backslash im Stringliteral.
-
Caligulaminus schrieb:
Backslash im Stringliteral.
Achja, ich brauch 2 Backslashs um den Punkt fürs Regex zu escapen. Danke.

-
Die Regex wird aber auch auf größere Zahlen als 999.99 matchen. Probier mal 1000.00 aus. Das wird auch gehen. Der Grund ist, dass die Regex auf den Teilstring "000.00" matcht. Wenn Du prüfen willst, ob der komplette String nur genau so eine Zahl enthält, dann solltest Du am Anfang ein '^' und ans Ende ein '$' hinzufügen. Auch sind die runden Klammern hier eigentlich unnötig. Also wäre das der code (in der Annahme, dass Du das wirklich meinst):
std::regex r( "^[0-9]{2,3}\\.[0-9]{2}$" );