Пример:
вот строка: "blablabla123:550:404:487blablabla500:488:474:401blablablabla"
вот что я использую:
string reg = "(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})";
это, очевидно, не работает, так как ищет начало с числа,
и я также хочу получить все результаты, но я не знаю, как это сделать, хотя я так сильно искал это. : /
Я хочу иметь 2 массива с:
Массив 1: должен возвращать [1] = "123"; [2] = "550"; [3] = "404"; [4] =
"487";
Массив 2: должен возвращать [1] = "500"; [2] = "488"; [3] = "474";
[4] = "401";
#include <regex>
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
typedef std::tr1::match_results<std::string::const_iterator> str_iterator;
int main () {
str_iterator res;
string regex = "(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})";
string str = "blablabla123:550:404:487blablabla500:488:474:401blablablabla";
const std::tr1::regex pattern(regex.c_str());
bool valid = std::tr1::regex_match(str, res, pattern);
//res is gonna be an array with the match results
if(valid){
printf("Matched with size of %d\n", res.size());
printf("Result 1: %s",res[1]);
printf("Result 2: %s",res[2]);
printf("Result 3: %s",res[3]);
printf("Result 4: %s",res[4]);
}else{
printf("Not Matched");
}
_getch();
return 0;
}