bool forward_checked = false;
bool sorryuri_checked = false;
bool stats_checked = false;
+
+ // cf RFC 2396 (A. Collected BNF for URI)
sregex sorry_uri_regex
= +('/' >>
- *(alpha |
- digit |
- (set = ';', ':', '@', '&', '=') |
- (set = '$', '-', '_', '.', '+') |
- (set = '!', '*', '\'', '\(', ')', ',') |
- '%' >> repeat<2>(xdigit)));
+ *(
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') |
+ '%' >> repeat<2>(xdigit) |
+ (set = ':', '@', '&', '=', '+', '$', ',')
+ )
+ >>
+ *(';' >>
+ *(
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) | // escaped
+ (set = ':', '@', '&', '=', '+', '$', ',')
+ ) // pchar
+ ) // param
+ ) // segment
+ >>
+ !('?' >>
+ *(
+ (set = ';', '/', '?', ':', '@', '&', '=', '+', '$', ',') | //reserved
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) // escaped
+ ) // uric
+ ) // query
+ >>
+ !('#' >>
+ *(
+ (set = ';', '/', '?', ':', '@', '&', '=', '+', '$', ',') | //reserved
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) // escaped
+ ) // uric
+ ); // fragment
+
typedef std::vector<std::string>::const_iterator vec_str_it;
try {
bool forward_checked = false;
bool sorryuri_checked = false;
bool stats_checked = false;
+
+ // cf RFC 2396 (A. Collected BNF for URI)
sregex sorry_uri_regex
= +('/' >>
- *(alpha |
- digit |
- (set = ';', ':', '@', '&', '=') |
- (set = '$', '-', '_', '.', '+') |
- (set = '!', '*', '\'', '\(', ')', ',') |
- '%' >> repeat<2>(xdigit)));
+ *(
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') |
+ '%' >> repeat<2>(xdigit) |
+ (set = ':', '@', '&', '=', '+', '$', ',')
+ )
+ >>
+ *(';' >>
+ *(
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) | // escaped
+ (set = ':', '@', '&', '=', '+', '$', ',')
+ ) // pchar
+ ) // param
+ ) // segment
+ >>
+ !('?' >>
+ *(
+ (set = ';', '/', '?', ':', '@', '&', '=', '+', '$', ',') | //reserved
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) // escaped
+ ) // uric
+ ) // query
+ >>
+ !('#' >>
+ *(
+ (set = ';', '/', '?', ':', '@', '&', '=', '+', '$', ',') | //reserved
+ alpha | digit |
+ (set = '-', '_', '.', '!', '~', '*', '\'', '(', ')') | // mark
+ '%' >> repeat<2>(xdigit) // escaped
+ ) // uric
+ ); // fragment
typedef std::vector<std::string>::const_iterator vec_str_it;