为什么Boost:Regex没有找到预期的所有结果? 我有一个C++样本,我想在相对URI中找到所有查询 (比如:/class?class\u id=-1,course\u ref=1,student\u ref=2,score\u ref=1)。如果它有效,我会找到所有结果:(“class_id=-1”“course_ref=1”“student_ref=2”“score_ref=1:)但只找到了“course_ref=1”!这是我的代码: #include <iostream> #include <boost/regex.hpp> int main() { std::string url = "/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1"; const boost::regex queries_pattern("(?<=(\?|\&))[a-zA-Z0-9_=-]+"); boost::smatch queries_result; boost::regex_search(url, queries_result, queries_pattern); std::string results(""); for (unsigned int i = 0; i <= queries_result.size(); i++) { if (!queries_result[i].str().empty()) std::cout << queries_result[i] << std::endl; } std::cin.get(); } #包括 #包括 int main(){ std::string url=“/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1”; const boost::regex查询_模式((?

为什么Boost:Regex没有找到预期的所有结果? 我有一个C++样本,我想在相对URI中找到所有查询 (比如:/class?class\u id=-1,course\u ref=1,student\u ref=2,score\u ref=1)。如果它有效,我会找到所有结果:(“class_id=-1”“course_ref=1”“student_ref=2”“score_ref=1:)但只找到了“course_ref=1”!这是我的代码: #include <iostream> #include <boost/regex.hpp> int main() { std::string url = "/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1"; const boost::regex queries_pattern("(?<=(\?|\&))[a-zA-Z0-9_=-]+"); boost::smatch queries_result; boost::regex_search(url, queries_result, queries_pattern); std::string results(""); for (unsigned int i = 0; i <= queries_result.size(); i++) { if (!queries_result[i].str().empty()) std::cout << queries_result[i] << std::endl; } std::cin.get(); } #包括 #包括 int main(){ std::string url=“/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1”; const boost::regex查询_模式((?,c++,regex,boost,C++,Regex,Boost,我不知道为什么,但我必须在迭代器上循环,而不是直接在结果上循环。下面是工作代码: #include <iostream> #include <boost/regex.hpp> int main() { std::string url = "/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1"; const boost::regex pattern("[a-zA-Z0

我不知道为什么,但我必须在迭代器上循环,而不是直接在结果上循环。下面是工作代码:

#include <iostream>
#include <boost/regex.hpp>

int main() {
    std::string url = "/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1";

    const boost::regex pattern("[a-zA-Z0-9_=-]+((?=&)|(?=$))");
    boost::sregex_token_iterator iter(url.begin(), url.end(), pattern, 0);
    boost::sregex_token_iterator end;

    for (; iter != end; ++iter) {
       std::cout << *iter << '\n';
    }   

    std::cin.get();
}
#包括
#包括
int main(){
std::string url=“/class?class_id=-1&course_ref=1&student_ref=2&score_ref=1”;
常量boost::正则表达式模式(“[a-zA-Z0-9_=-]+((?=&)|(?=$)”;
sregex_令牌迭代器iter(url.begin(),url.end(),pattern,0);
boost::sregex_token_迭代器end;
对于(;iter!=结束;++iter){

std::cout NathanOliver,它不工作,在regex tester web应用程序中工作正常。我有其他的regex片段(使用boost::regex)和单个反斜杠工作正常。您也可以省略组并使用字符类
(?选票收回。不确定为什么它与模式的结果不匹配:”)第四只鸟,谢谢你,对了。