C ++正则表达式*仅保存最后匹配的

时间:2018-06-06 19:25:29

标签: python c++ regex c++11

这是一个非常简单的例子来解释我经常遇到的问题。

这是我使用正则表达式处理文本文件a.txt的代码 只包含文字" 0123456789" ,即读取文件后的str变为此字符串。

现在我希望每个数字都在匹配数组的单独索引中。

匹配匹配[1]应该给0匹配[2]应该给1 ..但相反发生的事情只有最后匹配的*被保留,即匹配[1]给我们9。

如果我们将正则表达式作为"([0-9] *)"然后整个字符串将 在匹配[1]中,这不是必需的。

如何以分开的方式保留所有这些?

我在python正则表达式中遇到了类似的问题,同样的情况只发生了最后匹配的问题。

我再次强调,这是我所面对的一个非常基本的例子,但是我所面对的问题的确切方面,这里很难解释。

#include<iostream>
#include <fstream>
#include <sstream>
#include<regex>
#include<string>
using namespace std;
int main()
{
    ifstream inFile;
    inFile.open("a.txt");//open the input file

    stringstream strStream;
    strStream << inFile.rdbuf();//read the file
    string str = strStream.str();//str holds the content of the file

    regex r4("([0-9])*");

    if (std::regex_search(str, match, r4)) {
        cout<<match[1];
    }
}

0 个答案:

没有答案