我对正则表达式有疑问,需要一些帮助。我在 mein .txt 文件中有一些类似这样的表达式:
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