Я искал и проверял регулярные выражения, чтобы соответствовать всем Uris, но я не могу найти тот, который соответствует всем или большинству из них. Многие из тех, что я пробовал, выдают ошибку компиляции. У кого-нибудь есть Xpressive :: sRegex-совместимое регулярное выражение?
С чего можно начать:
using namespace boost::xpressive;
static const sregex re = _b >> (s1 = +(~(set= ':', '/', '?', '#')))
>> as_xpr("://")
>> (s2 = *(~(set= '/', '?', '#')))
>> (s3 = *(~(set= '?', '#')))
>> !(as_xpr('?') >> (s4 = *(~(set='#'))))
>> !(as_xpr('#') >> (s5 = *_)) >> _b;
Других решений пока нет …