私はboost::regex::regex_match
に問題があります。私はBOOST_REGEX_MATCH_EXTRA
をオンにして作業します。ブースト正規表現。 2つの部分の名前付きグループ
私が持っているもの:
string input1= "3 4 5";
string input2= "3 4 7";
私が取得したいどのような(これは私の問題の単純な例ではなく、実際の作業です):
list output1= [3 4 5];
list output2= []; //not matched
正規表現:what["group"]=5
とwhat["group"].captures()= [3, 4, 5]
OUTPUT2:not matched
P
((?<group>[0-6])[ ]?)*
OUTPUT1(これは大丈夫働いています)問題は:
私はより多くの1つのグループに正規表現の部分からデータを収集する必要があります。
は、私が試した:
((?<group>[0-6])[ ])*(?<group>[0-6])
OUTPUT1:what["group"]=4
と
OUTPUT2 what["group"].captures()=[3, 4]
:not matched
[OK]を、私は理解しています。グループの2番目の宣言は見られません。
は、私が試した:
((?<group>[0-6])[ ])*(?&group)
OUTPUT1:what["group"]=4
とwhat["group"].captures()= [3, 4, 4]
OUTPUT2:not matched
- しかし、これは何?どこから2番目の4番ですか?最初の例は一致しますが、2番目の例は一致しないため、「グループ」パターンがチェックされます。しかし、それは新しいものを保存するのではなく、最後に見つかった価値を2倍にします。どうして?たぶん私はいくつかのフラグをオンにするのを忘れましたか?
- 正規表現の異なる部分から1つのグループのデータを取得する別の方法はありますか?
私は1つのグループ、より多くを持っているので、token_iteratorは私を助けることができません。
そして、式は設定ファイルで設定する必要があります。静的Xpressiveは使用できません。
いいえ、あなたは1つのキャプチャグループにターゲット文字列の2つの異なる部分を詰め込むことができない - 少なくともないもの間、すべてをキャプチャせず。 –