に問題がありboost::regex::regex_match
ます。をオンにして作業しBOOST_REGEX_MATCH_EXTRA
ます。
私が持っているもの:
(これは私の問題の簡単な例であり、実際のタスクではありません)
string input1= "3 4 5";
string input2= "3 4 7";
私が取得したいもの:
list output1= [3 4 5];
list output2= []; //not matched
正規表現:
(これは正常に動作しています)
((?<group>[0-6])[ ]?)*
output1:what["group"]=5
およびwhat["group"].captures()= [3, 4, 5]
出力 2:not matched
問題は:
正規表現の複数の部分から 1 つのグループにデータを収集する必要があります。
私は試した:
((?<group>[0-6])[ ])*(?<group>[0-6])
output1:what["group"]=4
およびwhat["group"].captures()=[3, 4]
出力 2:not matched
わかりました。グループの 2 番目の宣言は表示されません。
私は試した:
((?<group>[0-6])[ ])*(?&group)
output1:what["group"]=4
およびwhat["group"].captures()= [3, 4, 4]
出力 2:not matched
- しかし、これは何ですか?2番目の4はどこから?最初の例は一致しますが、2 番目の例は一致しないため、「グループ」パターンをチェックします。ただし、新しい値を保存する代わりに、最後に見つかった値を 2 倍にします。なんで?多分私はいくつかのフラグをオンにするのを忘れましたか?
- また、正規表現の異なる部分から 1 つのグループ データを取得する別の方法はありますか?
複数のグループがあるため、token_iterator は役に立ちません。
また、式は構成ファイルで構成する必要があります。static Xpressive は使用できません。