这是一个非常简单的例子来解释我经常遇到的问题。
这是我使用正则表达式处理文本文件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];
}
}