經過天的黑客和閱讀的,我曾與升壓轉換器的正則表達式引擎沒有運氣,希望有人在這裏可以提供幫助。提振正則表達式捕獲組
我要搶第一場在哪裏的最後一個字段匹配一些輸入每行的。
string input =
"449 a dingo ate my baby THING\n"
"448 a dingo ate my baby THING\n"
"445 a dingo ate my baby BOOGNISH\n"
"446 a dingo ate my baby BOOGNISH\n"
"447 a dingo ate my baby STUFF\n";
比方說,我給我的正則表達式的下列字符串...
string re = "^([0-9]+).+?boognish$";
boost::regex expression(re,boost::regex::perl | boost:regex::icase);
,然後建立了我的比賽
const int subs[] = { 0, 1 };
boost::sregex_token_iterator it(input.begin(), input.end(), expression, subs);
boost::sregex_token_iterator end;
while (it != end)
{
fprintf(stderr,"%s|\n", it->str().c_str());
*it++;
}
下面是我從升壓得到輸出,請記住我要求全線和第一組比賽,我還要求「|」所以我們可以很容易地看到該行的末尾:
449 a dingo ate my baby THING
448 a dingo ate my baby THING
445 a dingo ate my baby BOOGNISH|
449|
446 a dingo ate my baby BOOGNISH|
446|
我真的很想445 |和446 |只是,它給了我449(直到碰到第一個BOOGNISH),然後是446.我在其他重新解析器上測試了它,它似乎工作正常。我在做什麼錯誤提升?
預先感謝您!
'*它++'應該是'++ it'。但是(可能)不會影響你的結果。 – 2011-05-26 21:20:05