正規表現を使用して入力文字列を解析しようとしています。繰り返しグループをキャプチャしようとすると問題が発生します。私は常にグループの最後のインスタンスに一致しているようです。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 group である最後のグループを取得しているようです。(MAN QFL)
私の目的は、3 つのグループすべてを取得することです (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 ();
}
このループは 1 回だけ実行されますが、この例では 3 回実行されると予想しています。どんな助けでも大歓迎です。