5

に問題があり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 は使用できません。

4

1 に答える 1