Regex boost library comparing

Regex boost library comparing

本文关键字:comparing library boost Regex      更新时间:2023-10-16
int array[328];
string array2[328];
int array3[328]; //counter array
int value=0;
std::string text("((1 0) (25 5) (27 2) )((25 5) (27 2) (31 2) )");
boost::regex regex("(\d)+[^\d+\)]"); // [^\d+] ");

boost::sregex_token_iterator iter(text.begin(), text.end(), regex, 0);
boost::sregex_token_iterator end;

for( ; iter != end; ++iter )
{
    std::cout<<*iter<<"n";

    for(int b=0; b<328; b++)
      {
        if(*iter == "1")
          {
            cout << "yesn";
            array3[b] = array3[b]+ count;
            break;
          }
      }
}
return 0;}

我们正在使用boost库来生成正则表达式,以查看1、25、27和31出现的次数,换句话说,就是括号后面的第一个数字。然而,我们试图使用一个数字介于1-28之间的数组来比较它,但我们不知道要比较的iter类型是否有意义。

您的代码和正则表达式在许多方面都存在严重的畸形。但除此之外,您遇到的基本问题是,给定您的正则表达式是如何形成的,匹配将导致string::const_iterator s的pair,分别指向匹配的开始和结束。

把你的代码改成:

    for(int b=0; b<328; b++)
      {
        if(*iter == "1 ")
          {
            cout << "yesn";
            array3[b] = array3[b]+ count;
            break;
          }
      }
}

…它会成功的