#include<iostream>
#include <regex>
using namespace std;
/*
论坛帖子
任意一串字符串{ "as65d4sa6d556sad6d16s5a165sf4fsdaf544" },
将其中“连续的数字”取出并组合成“新的数”,
放入一个新的数组中,如 将65这个数放入a[0]中
*/
int main()
{
char g[100] = { "as65d4sa6d556sad6d16s5a165sf4fsdaf544" };
int a[100] = { 0 };
int i = 0, j = 0;
int tmp = 0;
char *p = g;
while (*p != '\0')
{
while (*p >= 48 && *p <= 57) //数字 0-9
{
tmp = tmp * 10 + *p - 48; //将几个挨着的数字拼接成一个数
p++;
i++; //统计拼接次数
}
if (i > 1 && tmp > 0) //拼接次数2次或2次以上就将其存到数组a
{
a[j] = tmp;
j++; //数组a上界
}
tmp = 0; //清空
i = 0; //清空计数
p++;
}
for (int i = 0; i < j; i++)
{
cout << a[i] << endl; //输出结果
}
cout << "----正则实现----" << endl;
string str = g;
int array[100] = { 0 }, k = 0;
regex reg("\\d{2,3}");
sregex_iterator it(str.cbegin(), str.cend(), reg);
sregex_iterator end;
for (; it != end; ++it)
{
array[k] = atoi(it->str().c_str());
k++;
}
for (int i = 0; i < k; i++)
{
cout << array[i] << endl;
}
return 0;
}