c++ - 如何让正则表达式匹配句子的中间?

标签 c++ regex c++14

我正在尝试让正则表达式匹配字符串中的内容,然后捕获字符串的其余部分。根据https://regex101.com/下面的正则表达式应该可以工作,但事实并非如此。似乎 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];
   }

最佳答案

regex_match应该匹配整个输入序列,而不是它的一部分。对于后者,您需要 regex_search .

使用它,您的示例打印 /word//

Live demo

关于c++ - 如何让正则表达式匹配句子的中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703290/

相关文章:

c++ - 静态模板化 constexpr 嵌套类成员

c++ - 从 std::string 转换为 DWORD

c++ - 将我的应用程序与内核连接的最佳方式是什么?

c# - Regex C# - 获取文本中所有出现的地方

python - 混合语言单词的词尾正则表达式(在 python2 中)

c++ - 如何在不发生段错误的情况下将 vector 复制到另一个 vector 的子 vector ?

c++ - "redefinition"是什么意思?

c++ - 用于客户端 TLS 连接的 OpenSSL 或 LibreSSL C++ 示例

c# - 获取模式之后没有类或 ID 的文本

c++ - 有没有办法将 std::move std::string 放入 std::stringstream