C++ 11の新しいregexライブラリのソースをいくつか見てきましたが、そのほとんどは構文やregex_matchなどの基本的な使い方に焦点を当てています。またはregex_search。これらの記事はregexライブラリの使用を開始するのに役立ちましたが、キャプチャグループの詳細を見つけるのは困難です。C++ 11 Regexはキャプチャグループ識別子を見つける
私が達成しようとしているのは、一致するキャプチャグループがどれかを見つけることです。これまでのところ、私はこれを行うための単一の方法しか見つけませんでした。
#include <iostream>
#include <string>
#include <regex>
int main(int argc, char** argv)
{
std::string input = "+12 -12 -13 90 qwerty";
std::regex pattern("([+-]?[[:digit:]]+)|([[:alpha:]]+)");
auto iter_begin = std::sregex_token_iterator(input.begin(), input.end(), pattern, 1);
auto iter_end = std::sregex_token_iterator();
for (auto it = iter_begin; it != iter_end; ++it)
{
std::ssub_match match = *it;
std::cout << "Match: " << match.str() << " [" << match.length() << "]" << std::endl;
}
std::cout << std::endl << "Done matching..." << std::endl;
std::string temp;
std::getline(std::cin, temp);
return 0;
}
std::sregex_token_iterator
の四番目の引数の値を変更することで、私はそれが彼らの残りの部分を捨てて、それを言って、維持する部分マッチを制御することができます。したがって、マッチがどのキャプチャグループに属しているかを調べるには、キャプチャグループを繰り返して、特定のグループに対してどのマッチが捨てられていないかを調べるだけです。これがあれば、バックグラウンドで起こっているいくつかのキャッシュがありますしない限り、私は再び試合を入力の上を通過して見つけることstd::sregex_token_iterator
の各建設を期待しているため
しかし、これは、私にとっては望ましくないであろう(誰かが私を修正してください間違っていますが、これは私が来ることができる最高の結論です)。
マッチが所属するキャプチャグループを見つける良い方法はありますか?または、部分的な作業を繰り返し実行している最中ですか?
本当にありがとうございました、私は期待していました。 – TheCodeBroski