C++ 如何使用Reg Exp分隔此字符串

C++ 如何使用Reg Exp分隔此字符串,c++,regex,string,C++,Regex,String,对于此字符串[268950][268954][269955][272955][270955][268953] 我想一对一对地获取[,]中的数字 我使用C++ +正则表达式来解析这个字符串。 这是我的测试代码: ifstream file("output.txt"); char regex_base[] = "[\\[0-9, 0-9\\]]{10}"; char regex_num[] = "[0-9]{3}"; regex reg_base(regex_base, regex_const

对于此字符串
[268950][268954][269955][272955][270955][268953]

我想一对一对地获取
[,]
中的数字

我使用C++ +正则表达式来解析这个字符串。

这是我的测试代码:

ifstream  file("output.txt");

char regex_base[] = "[\\[0-9, 0-9\\]]{10}";
char regex_num[] = "[0-9]{3}";

regex reg_base(regex_base, regex_constants::icase);
regex reg_num(regex_base, regex_constants::icase);

if (file.is_open())
{
    string s;
    while (!file.eof()){
        getline(file, s);
        smatch m;
        while (regex_search(s, m, reg_num)) {
            for (int i = 0; i < m.size(); i++)
                cout << m[i] << endl;
        }
    }
}
ifstream文件(“output.txt”);
char regex_base[]=“[\\[0-9,0-9\\]{10}”;
char regex_num[]=“[0-9]{3}”;
regex reg_base(regex_base,regex_常量::icase);
regex reg_num(regex_base,regex_常量::icase);
if(file.is_open())
{
字符串s;
而(!file.eof()){
getline(文件,s);
smatch m;
while(正则表达式搜索(s,m,regu num)){
对于(int i=0;icout我已经删除了捕获组,因为您似乎根本没有使用它们,并添加了一些代码来演示如何从输入字符串中获取匹配项:

char regex_base[] = "\\[[0-9]+, [0-9]+\\]";
...
s = "[268, 950][268, 954][269, 955][272, 955][270, 955][268, 953]"; // FOR TEST
smatch m;
while (regex_search(s, m, reg_num)) 
{
    for (auto x:m) std::cout << x << "\r\n";
    s = m.suffix().str();
}
char regex\u base[]=“\\[[0-9]+,[0-9]+\\]”;
...
s=“[268950][268954][269955][272955][270955][268953]”;//用于测试
smatch m;
while(正则表达式搜索(s,m,regu num))
{

对于(auto x:m)std::cout如果我是你,我将编写一个基本算法来实现这一点。这是一个无限循环,因为你在无限循环中对同一个字符串调用它。此外,
而(!file.eof())
是错误的。获取字符串中的数字的最佳方法是什么,我很困惑。你的模式似乎有点不正确。请尝试
“\\\[[0-9]+,[0-9]+\\]“
谢谢,我知道了。我错过了“s=m.suffix().str();”并且写错了regexp。
char regex_base[] = "\\[([0-9]+), ([0-9]+)\\]";
...
s = "[268, 950][268, 954][269, 955][272, 955][270, 955][268, 953]";
smatch m;
while (regex_search(s, m, reg_num)) 
{
    std::cout << m[1] << ", " << m[2] << std::endl;
    s = m.suffix().str();
}