std::regex für Hex
-
Hallo zusammen,
sorry für die triviale frage, aber ich stehe irgendwie auf dem Schlauch. Kann mir jemand Code schreiben, der einen einen std::Regex erzeugt, welcher eine Hexadezimalzahl erkennt, die mindestens eine Stelle hat aber beliebig lang werden kann? Ich danke schon mal vielmals.
-
Was genau ist denn das Problem? Der reguläre Ausdruck braucht ja nur ungefähr so auszusehen:
/0x[0-9a-fA-F]+/
.
-
std::regex pattern("0x[a-fA-F0-9]+"); // eventuell auch ohne 0x std::regex_match("0xabcbdbdb", pattern);
(Ungetestet, bin kein Regex-Typ und hab die mit C++ noch nie verwendet l0l)
-
regex reg_hex("0[xX][0-9a-fA-F]+"); copy( sregex_token_iterator(reg_hex.begin(),reg_hex.end(),reg_hex,0), sregex_token_iterator(), ostream_iterator<std::string>(cout,"\n") );
Schau mal ob das geht.
-
Hoppla, die Case-Insensitivity sollte eigentlich besser direkt als Parameter an den regex-Konstruktor übergeben werden:
using namespace std; using namespace std::regex_constants; regex pattern("0x[a-f0-9]+", icase); regex_match("0xabcbdbdb", pattern);
-
Danke euch allen. Das hat funktioniert. Ich bin leider nicht so der Experte für reguläre Ausdrücke.
-
TNA schrieb:
Danke euch allen. Das hat funktioniert. Ich bin leider nicht so der Experte für reguläre Ausdrücke.
Ich auch nicht, aber einfach machen oder im Editor einfach mal Find/Replace mit Regex benutzen, dann kriegt man langsam en Plan für die Syntax.
Und das theoretische Wissen dazu holt man sich im Studium