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 😉


Anmelden zum Antworten