C ++ STRINGS регулярное выражение - PullRequest
0 голосов
/ 13 февраля 2012

Я пытаюсь восстановить всю строку строки ниже, определенной на первых трех буквах, и затем отправить полученную строку с помощью регулярных выражений, которые я должен проверить строку. Таким образом, поток этой маленькой программы будет выглядеть следующим образом:

** ". N /" = ** 1TLIS / PART / 123456789I / A / 1234RFGH67323 и AT0931 / 2DEC / GVA / Y **** тогда обе строки будут отправляться одна за другой в регулярные выражения.

Так есть ли способ, где я могу получить все строки, которые начинаются с .N / , а затем отправлять строку за строкой, чтобы проверяться регулярными выражениями? я знаю, как это сделать, если есть только одна строка, начинающаяся с .N / , но нет, если есть две, которые я попытался добавить, но это не сработало так, как я хотел, чтобы это работало.

std::string message = ".N/1TLIS/PART/123456789I/A/1234RFGH67323\n"
        ".N/AT0931/2DEC/GVA/Y\n"
        ".I/KL0967/02APR/AMS/F\n"
        ".O/123/MARRIOTT/27MAY/084512L//FEDEXVAN45\n";

КОД, КОТОРЫЙ Я ИСПОЛЬЗУЮ НА МОМЕНТ

std::vector<std::string> el; //VECTOR
split(el,message,boost::is_any_of("\n"));// the string above is split line for line into vector el

for(int i = 0; i < el.size(); i++)
{
    if(el[i].substr(0,3) == ".N/")
    {
        cout << "------- Validating .N/ ---------" << endl;
        str = el[i].substr(3);
        split(st,str,boost::is_any_of("/"));
    }
}
cout << str;

// the regular expression process starts here 
boost::regex const string_matcher("\\d");
if(boost::regex_match(st[0],string_matcher))
{
    //output
}
else
{
    //output
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...