私は数日間これをやろうとしてきましたが、それでも正しい結果は得られません。正規表現 - 複数の行とその位置で複数のキャプチャを取得する
文字列全体(改行を含む)からすべてのキャプチャを取得する必要がありますが、最初のマッチの後には戻っていません。私はこの正規表現を持っています:(\d+)\s*;
。結果は数字だけでなければならず(スペースやセミコロンではない)、入力文字列全体(複数行の文字列)から取得する必要があります。
したがって、例えば、この入力から:
5;
6 ;
7;
8 ;
これは "5" を返す必要があり、 "6"、 "7" 及び "8"。
誰でもC++でそれを行う方法を知っていますか?
ありがとうございます!
EDIT:コメントで言及リンクから
が、私はこのコードを思い付いた:
std::regex regex(regex_str, std::regex_constants::icase);
for (std::sregex_iterator it = std::sregex_iterator(input.begin(), input.end(), regex); it != std::sregex_iterator(); ++it)
{
std::smatch m = *it;
std::cout << "\t" << m[1].str() << std::endl;
}
それはうまく動作しますが、私は言及を忘れてしまった一つのことがある:Iまた、すべてのキャプチャの位置を取得する必要があります。使用するm.position()
私は全体のマッチの位置を得ることができますが、私が探しているキャプチャグループの前に何かがある場合、それは私に間違った位置を教えてくれます。だから、私はどのようにキャプチャの位置を得ることができますか?
あなたのコードを表示してください。私は 'match_object [1] .str()'でキャプチャされた値にアクセスできると確信しています。 –
複数の一致を得るには、1つ以上の方法があります。どのようにすることができるかの例については、[この回答](http://stackoverflow.com/questions/32765512/what-does-stdmatch-resultssize-return/32765645#32765645)を参照してください。 –