As CPallini already sayed; its pretty simple ;-)
#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main(char *args, int argc)
{
string line("[03/Dec/2013:10:53:59 +0000] - [32002 10.102.4.254 195.229.241.182 ...");
regex pattern("\\[([\\w:/]+\\s[+\\-]\\d{4})\\] (\\S) \\[(\\w+) ([\\d.]+) ([\\d.]+) (\\w+) (\\w+.*)\\] (\\w.*?\\d{3}) ([\\d.]+) \"([^\"]*)\" \"([^\"]*)\" (\\S) (\\w+) (.*)");
smatch sm;
regex_match (line,sm, pattern);
cout << "string object with " << sm.size() << " matches" << endl << endl;
cout << "the matches were: ";
for (unsigned i=0; i<sm.size(); ++i) {
cout << "[" << sm[i] << "] " << endl;
}
}
Its on you to check if the patterns have right syntax for c++; I will not look at that.