情况如下:
string str("<TR>
    <TD align=middle width="9%"><B><FONT color=black size=2>数字号码</FONT></B></TD>
    <TD align=middle width="4%"><B><FONT color=black size=2>当前时间</FONT></B></TD>
   <TD align=middle width="4%"><B><FONT color=black size=2>消费金额</FONT></B></TD>
    <TD align=middle width="9%"><B><FONT color=black size=2>当前状态</FONT></B></TD></TR>");match_results results;
rpattern pat1("<TR>((.|\n)*)?</TR>", GLOBAL | ALLBACKREFS | NOCASE );
int igroups = pat1.cgroups();
match_results::backref_type br = pat1.match( str, results);match_results::backref_vector vector = results.all_backrefs();
match_results::backref_vector::iterator iter;if (br.matched)
{
    int i=0;
    for (iter = vector.begin(); iter != vector.end(); iter++)
    {
if(i%igroups != 0)
{
   string strText = (*iter).str();
}
i++;
    }
}当str字符串比较长的时候,匹配是不成功的,当str减少一行后即如果
string str(("<TR>
    <TD align=middle width="9%"><B><FONT color=black size=2>数字号码</FONT></B></TD>
    <TD align=middle width="4%"><B><FONT color=black size=2>当前时间</FONT></B></TD>
   <TD align=middle width="4%"><B><FONT color=black size=2>消费金额</FONT></B></TD>
    <TD align=middle width="9%"><B><FONT color=black size=2>当前状态</FONT></B></TD></TR>");
的时候,匹配就成功,请问为什么会这样?

解决方案 »

  1.   

    对不起,str减少一行应该是这样:
    string str(("<TR>
        <TD align=middle width="9%"><B><FONT color=black size=2>数字号码</FONT></B></TD>
        <TD align=middle width="4%"><B><FONT color=black size=2>当前时间</FONT></B></TD>
       <TD align=middle width="4%"><B><FONT color=black size=2>消费金额</FONT></B></TD></TR>");即str的长度减少到一定后,匹配即成功了。
      

  2.   

    greta-2.6.4应该是最新的版本了
      

  3.   

    我尝试把库改为boost,情况一样,一旦字符串超过一定长度就不能匹配成功,具体原因还不清楚,结贴了。