boost ( ja, es läuft :D )::regex_replace unbekannter Parameter



  • Hi,
    nachdem Boost bei mir endlich läuft (danke nochmal besonders an Atchi), habe ich auch gleich schon eine Frage zu dem oben genannten Template

    emplate <class traits, class charT>
    basic_string<charT> regex_replace(const basic_string<charT>& s,
                                const basic_regex<charT, traits>& e,
                                const basic_string<charT>& fmt,
                                match_flag_type flags = match_default);
    

    (link: http://boost.org/libs/regex/doc/regex_replace.html)

    Wozu ist hier der fmt string? Ich meine, ich übergebe den string s, mit der expression e und erhalte einen string zurück. Das reicht doch normalerweise (zumindest in Perl und PHP). Wozu brauch ich hier noch einen String?

    Wäre nett wenn mich jemand aufklären könnte 👍



  • was sagst du dazu:

    #include <boost/regex.hpp>
    #include <string>
    #include <iostream>
    
    int main()
    {
    	std::string inputString = "123456";
    	boost::regex e("(^\\d{1})(\\d{2})(\\d{3})$");
    	std::string fmt("$1-$2 $3");	
    	std::cout << boost::regex_replace(inputString, e, fmt, boost::match_default) << std::endl;
    }
    


  • dazu sage ich: Danke! 😃

    edit:
    Ich war wohl etwas vorschnell.

    Ich möchte von einer URL das http:// wegmachen. Also dachte ich mir folgendes:

    string _URL = "http://test.de";
    boost::regex re("(^html://)(.*)$");
    string fmt = "$2";
    cout << boost::regex_replace(_URL, re, fmt, boost::match_default) << endl;
    

    Klappt nur leider nicht. An der re kann es aber eigentlich nicht liegen?



  • doch es liegt gerade an deine re 😃
    so muss sein:
    [cpp]boost::regex re("(^http://)(.*)$");[/cpp]



  • ...

    was soll man dazu sagen? 😮

    Danke.


Anmelden zum Antworten