2010-09-02 13 views
3

comment puis-je analyser une URL en C++ avec boost regex comme je l'ai une urlC++ Url Parser utilisant boost regex match de

http://www.google.co.in/search?h=test&q=examaple 

je dois diviser le base url www.google.com puis interroger chemin search?h=test&q=examaple

Répondre

6

Est-ce vous êtes sûr que vous avez besoin de regex pour ça?

#include <iostream> 
#include <algorithm> 

int main() 
{ 
    using namespace std; 
    string x = "http://www.google.co.in/search/search/?h=test&q=examaple"; 

    size_t sp = x.find_first_of('/', 7 /* skip http:// part */); 
    if (sp != string::npos) { 
     string base_url(x.begin()+7, x.begin()+sp); 
     cout << base_url << endl; 
     sp = x.find_last_of('/'); 
     if (sp != string::npos) { 
       string query(x.begin()+sp+1, x.end()); 
       cout << query << endl; 
     } 
    } 

    return 0; 
} 

version regex:

string input_string = "http://www.google.co.in/search/search/?h=test&q=examaple"; 
boost::regex exrp("^(?:http://)?([^/]+)(?:/?.*/?)/(.*)$"); 
boost::match_results<string::const_iterator> what; 
if(regex_search(input_string, what, exrp)) { 
    std::string base_url(what[1].first, what[1].second); 
    std::string query(what[2].first, what[2].second); 
} 
+0

i besoin la base d'une url de votre code échoue avec cette url 'http://www.google.co.in/search/search/ ? h = test & q = examaple' – rajesh

+0

@rajesh, version regex fixe et ajoutée. –

+0

ça marche ... – rajesh