Boostで単純な文構造を解析しようとしています。Boost を使用するのはこれが初めてなので、これは完全に間違っている可能性があります。私がやりたいことは、この形式の文字列のみを受け入れることです:
- 文字で始める必要があります (大文字と小文字は区別されません)
- 含有することができます:
- 英字
- 数字
- アンダースコア
- ハイフン
- 他のすべての文字は区切り文字として機能します
どの文字が区切り文字なのかわからないので (たくさんあるかもしれません)、それに敏感な正規表現を作ろうとしました。唯一の問題は、各単語の最後の文字しか取得できないことです。これにより、私の正規表現は正しいと信じるようになりますが、ブーストの使用はそうではありません。これが私のコードです:
boost::regex regexp("[A-Za-z]([A-Za-z]|[0-9]|_|-)*", boost::regex::normal | boost::regbase::icase);
boost::sregex_token_iterator i(text.begin(), text.end(), regexp, 1);
boost::sregex_token_iterator j;
while(i != j){
cout << *i++ << std::endl;
}
これは、 Boost Web サイトで見つけたものをモデルにしています。mf コードを作成するためのテンプレートとして、最後の例 (ページの下部) を使用しました。この例では、テキストは文字列型のオブジェクトです。
私の正規表現は正しいですか?ブーストを正しく使用していますか?