C++ 如何让正则表达式匹配句子的中间部分?

C++ 如何让正则表达式匹配句子的中间部分?,c++,regex,c++14,C++,Regex,C++14,我试图让正则表达式匹配字符串上的某些内容,然后捕获字符串的其余部分。根据下面的正则表达式,它应该是有效的,但事实并非如此。看起来C++正则表达式将只从字符串的开始匹配。我怎样才能让它从绳子的中间开始呢?我知道我可以*?\/word(.*),但我不希望这样,因为正则表达式是用户输入 std::string uri("a/word/"); std::smatch match; std::regex rgx(R"(\/word(.*))"); if (std::regex_ma

我试图让正则表达式匹配字符串上的某些内容,然后捕获字符串的其余部分。根据下面的正则表达式,它应该是有效的,但事实并非如此。看起来C++正则表达式将只从字符串的开始匹配。我怎样才能让它从绳子的中间开始呢?我知道我可以
*?\/word(.*)
,但我不希望这样,因为正则表达式是用户输入

   std::string uri("a/word/");
   std::smatch match;
   std::regex rgx(R"(\/word(.*))");
   if (std::regex_match(uri, match, rgx)) {
      std::cout << match[0] << ' ' << match[1];
   }
std::stringuri(“a/word/”);
std::smatch匹配;
std::regex rgx(R“(\/word(.*)”);
if(std::regex_match(uri、match、rgx)){
std::cout应该匹配整个输入序列,而不是其中的一部分

使用该选项,您的示例将打印
/word/


您可以尝试将
*
放在模式的开头。