如何使用 std::regex 匹配多个结果

How to match multiple results using std::regex(如何使用 std::regex 匹配多个结果)
本文介绍了如何使用 std::regex 匹配多个结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如.如果我有一个像first second third Fifth"这样的字符串,并且我想在一个操作中匹配每个单词以一个一个地输出它们.

for example.If I have a string like"first second third forth"and I want to match each single word in one operation to output'em one by one.

我只是认为(S*){0,}"会起作用.但实际上并没有.

我该怎么办?

这是我的代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    regex exp("(\b\S*\b)");
    smatch res;
    string str = "first second third forth";
    regex_search(str, res, exp);
    cout << res[0] <<" "<<res[1]<<" "<<res[2]<<" "<<res[3]<< endl;
}   

我期待着您的帮助.:)

I'm looking forward to your kindly help. :)

推荐答案

这可以在C++11regex中完成.

This can be done in regex of C++11.

两种方法:

  1. 您可以在 regex 中使用 () 来定义您的捕获.
  1. You can use () in regex to define your captures.

像这样:

    string var = "first second third forth";

    const regex r("(.*) (.*) (.*) (.*)");  
    smatch sm;

    if (regex_search(var, sm, r)) {
        for (int i=1; i<sm.size(); i++) {
            cout << sm[i] << endl;
        }
    }

现场观看:http://coliru.stacked-crooked.com/a/e1447c4cff9ea3e7

  1. 你可以使用sregex_token_iterator():

 string var = "first second third forth";

 regex wsaq_re("\s+"); 
 copy( sregex_token_iterator(var.begin(), var.end(), wsaq_re, -1),
     sregex_token_iterator(),
     ostream_iterator<string>(cout, "
"));

现场观看:http://coliru.stacked-crooked.com/a/677aa6f0bb0612f0

这篇关于如何使用 std::regex 匹配多个结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Rising edge interrupt triggering multiple times on STM32 Nucleo(在STM32 Nucleo上多次触发上升沿中断)
How to use va_list correctly in a sequence of wrapper functions calls?(如何在一系列包装函数调用中正确使用 va_list?)
OpenGL Perspective Projection Clipping Polygon with Vertex Outside Frustum = Wrong texture mapping?(OpenGL透视投影裁剪多边形,顶点在视锥外=错误的纹理映射?)
How does one properly deserialize a byte array back into an object in C++?(如何正确地将字节数组反序列化回 C++ 中的对象?)
What free tiniest flash file system could you advice for embedded system?(您可以为嵌入式系统推荐什么免费的最小闪存文件系统?)
Volatile member variables vs. volatile object?(易失性成员变量与易失性对象?)