I型の文字列から左&右部分を抽出するために、次のコードを持っているC++ 11正規表現はサブマッチ
[3-> 1]、[2-> 2]、[5-> 3]
私のコードは次のようになります以下の
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
regex expr("([[:d:]]+)->([[:d:]]+)");
string input = "[3->1],[2->2],[5->3]";
const std::sregex_token_iterator end;
int submatches[] = { 1, 2 };
string left, right;
for (std::sregex_token_iterator itr(input.begin(), input.end(), expr, submatches); itr != end;)
{
left = ((*itr).str()); ++itr;
right = ((*itr).str()); ++itr;
cout << left << " " << right << endl;
}
}
出力のように見えます
3 1
2 2
5 3
今、私は最初の部分が数字の代わりに文字列になるように拡張しようとしています。例えば、入力は
[(3)、(5)、(0,1)→2]、[(32,2)→6]、[(27)、(61) 、11) - > 1]
そして私は、私は
(3),(5),(0,1)->2],[(32,2)->6],[(27),(61,11) 1
を以下のよう
("(\\(.*+)->([[:d:]]+)")
は、ちょうど2つの文字列全体を分割しようとした
(3),(5),(0,1) 2
(32,2) 6
(27),(61,11) 1
基本的な表現としてそれを分割する必要があります誰かが私にこれを達成するためのいくつかの提案を与えることができますか?すべての助けを感謝します。
正規表現を削除し、適切なパーサーを作成します。 –