std::regex を使用した複数の結果の照合
正規表現を使用すると、文字列内で複数出現する単語を照合するのが難しい場合があります。式「(bS*b){0,}」は文字列内のすべての連続する単語に一致するように見えますが、目的の出力が得られない可能性があります。代わりに、反復的なアプローチをお勧めします。
以下は修正されたコードです:
#include <iostream> #include <string> #include <regex> int main() { regex exp("(\b\S*\b)"); smatch res; string str = "first second third forth"; string::const_iterator searchStart(str.cbegin()); while (regex_search(searchStart, str.cend(), res, exp)) { cout << (searchStart == str.cbegin() ? "" : " ") << res[0]; searchStart = res.suffix().first; } cout << endl; return 0; }
この更新されたコードでは、正規表現検索を実行しながら while ループを使用して文字列を反復処理します。ループは、searchStart イテレータを文字列の先頭に設定することで開始されます。次に、各反復内で:
一致するものが見つからなくなるまで文字列を反復処理することで、すべての単語を 1 つずつ出力できます。
以上がC の `std::regex` を使用して文字列内の複数の単語を効率的に照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。