正規表現に問題があり、助けが必要です。mein .txt ファイルに次のような式がいくつかあります。
19 = NAND (1, 19)
正規表現 : http://rubular.com/r/U8rO09bvTO
この正規表現を使用すると、数字の個別の一致が得られました。しかし今、ブラケット内の数字の量が不明な正規表現が必要です。
例えば:
19 = NAND (1, 23, 13, 24)
マッチ 1: 19、マッチ 2: 1、マッチ 3: 23、マッチ 4: 13、マッチ 5: 24
枚数はわかりません。したがって、不明な番号まで、ブラケット内の最小 2 の番号の主な式が必要です。
ちなみに私はc++を使っています。@ Martjin あなたの最初の正規表現はとてもうまくいきました。ここに私のコード:
boost::cmatch result;
boost::regex matchNand ("([0-9]*) = NAND\\((.*?)\\)");
boost::regex matchNumb ("(\\d+)");
string cstring = "19 = NAND (1, 23, 13, 24)";
boost::regex_search(cstring.c_str(), result, matchNand);
cout << "NAND: " << result[1] << "=" << result[2] << endl;
string str = result[2];
boost::regex_search(str.c_str(), result, matchNumb);
cout << "NUM: " << result[1] << "," << result[2]<< "," << result[3] << "," << result[4] << endl;
私の出力: NAND: 19=1, 23, 13, 24 NUM: 1,,,
だから私の新しい問題は、最初の数字しか見つからないことです。結果は、このソリューションとは正反対です: http://rubular.com/r/nqXDSuBXjc