我有一個正則表達式的問題,需要一些幫助。我有炒麪.txt文件的一些表達這樣的:Boost正則表達式未知數var
19 = NAND (1, 19)
正則表達式:http://rubular.com/r/U8rO09bvTO
有了這個正則表達式我被分隔爲匹配的數字。 但現在我需要一個正則表達式,其中括號中的數字數量未知。
例如:
19 = NAND (1, 23, 13, 24)
MATCH1:19,MATCH2:1,MATCH3:23,match4:13,match5: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
感謝您的幫助,現在我有一個新問題,你可以看到它上面 –
我不熟悉C++,但這裏也許有一些幫助: 函數regex_search似乎只搜索一次正則表達式,它會將每個組'(..)'存儲在結果數組中。由於我們的正則表達式只有一個組,它只會填充'result [0]'。 如何獲得多個匹配在這裏描述:http://stackoverflow.com/questions/3122344/boost-c-regex-how-to-get-multiple-matches –
我現在看到,該文檔也有一個例子如何在示例部分執行多個匹配:http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/ref/regex_search.html –