我试图获取一个正则表达式来匹配字符串上的某些内容,然后捕获字符串的其余部分。 根据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];
   }

#1楼 票数:2 已采纳

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

使用该示例,您的示例将输出/word/ /

现场演示

  ask by Mac translate from so

未解决问题?本站智能推荐:

1回复

使用正则表达式匹配功能定义

我想匹配一个函数定义。 函数定义可以像 我写了一个正则表达式foo\\s*\\([\\w, ]*\\)\\s*{并在原子文本编辑器中尝试过,它运行良好。 但是,当我尝试在C ++ 14编译器中运行它时,它给了我regex_error()。 我的C ++正则表达式是regex b("
2回复

C ++正则表达式:非贪婪的匹配

我正在尝试制作一个匹配URL参数的正则表达式并提取它们。 例如,如果我得到以下参数字符串?param1=someValue&param2=someOtherValue , std::regex_match应该提取以下内容: param1 some_content
2回复

为什么不同的GCC 4.9.2安装会为此正则表达式匹配提供不同的结果?

我在ideone和Coliru上发布了以下代码: 两个站点都使用GCC 4.9.2。 我不知道ideone使用什么编译参数,但Coliru中没有什么不寻常之处。 Coliru没有给我match1结果: Coliru ideone(顺便提一下,使用libc ++ ,
3回复

如何获取未知数量的正则表达式匹配项?

我正在尝试在字符串中找到几个数字的位置。 我只能得到最后一位,或者以前指定的位数: 结果: 如何从提供的字符串中获取整个数字序列,即123456?
1回复

我们可以重新定义一个正则表达式吗?

我正在使用正则表达式来格式化我的输入字符串,我的问题是我的字符串必须替换太多不同的值,因此我必须使用许多正则表达式。 我的问题是,我可以重新定义一个正则表达式来节省系统内存吗?
1回复

C ++正则表达式行为

我在regexr或regexpal中检查了这个简单的正则表达式测试: \\“[a-zA-Z_0-9 - ] + \\”[\\ s] :[\\ s] ([0-9] 1 [0-9] | \\ “[a-zA-Z_0-9:\\ s - \\,。/ \\ =;] 1 [a-zA-Z_0-9:\\ s -
2回复

C ++正则表达式对长序列的段错误

我正在解析stackoverflow转储,并在这个看似无辜的问题上提出了一个小的,几乎看不见的细节,它在文本的末尾有22311个空格。 我正在使用std :: regex(不知何故,它们对我来说比boost :: regex更好)用单个空格替换所有连续的空格,如下所示: SIGSE
1回复

使用utf8格式的正则表达式过滤字符串

我试图过滤掉特殊字符的字符串并将其转换为小写字符。 例如: "Good morning!" 变成了good morning 。 我正在将一个字符串传递给我的函数。 我正在成功过滤我的英语字符串,但是当我传递的是我母语的字符串时,我遇到了问题。 如果我想包含所有utf-8字符,我应