Я пытаюсь разобрать входную строку с помощью регулярного выражения.У меня проблема при попытке захвата повторяющейся группы.Кажется, я всегда соответствую последнему экземпляру группы.Я пытался использовать Reluctant (не жадные) квантификаторы, но мне кажется, что-то не хватает.Может кто-нибудь помочь?
Попытка регулярного выражения:
(OS)\\s((\\w{3})(([A-Za-z0-9]{2})|(\\w{3})(\\w{3}))\\/{0,1}){1,5}?\\r
(OS)\\s((\\w{3}?)(([A-Za-z0-9]{2}?)|(\\w{3}?)(\\w{3}?))\\/{0,1}?){1,5}?\\r
Строка ввода:
OS BENKL/LHRBA/MANQFL\r\n
Мне всегда кажется, что я получаю последнюю группу - группу MANQFL (MAN QFL)
,и моя цель состоит в том, чтобы получить все три группы (может быть 1-5 групп):
(BEN KL) , (LHR BA) and (MAN QFL).
Фрагмент кода C ++:
std::string::const_iterator start = str.begin(), end = str.end();
while(regex_search(start,end,what,expr))
{
cout << what[0];
cout << what[1];
...
start += what.position () + what.length ();
}
Этот цикл выполняется только один раз, хотя я ожидаюэто запустить 3 раза в этом примере.Любая помощь будет высоко ценится.