3

how can i parse an url in c++ with boost regex like i have an url

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

i need to split the base url www.google.com and then query path search?h=test&q=examaple

1 Answer 1

6

Are you sure you need regex for that?

#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;
}

regex version:

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 );
}
Sign up to request clarification or add additional context in comments.

3 Comments

i need the base of an url your code fails with this url http://www.google.co.in/search/search/?h=test&q=examaple
@rajesh, fixed and added regex version.
Why do you escape the slashes in that regexp? You don't need to, it works without them

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.