例子:正则表达式在C++中从正则表达式的字符串文本的任何部分获取
这里是字符串:"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;
}
是的,这听起来是正确的,我希望你已经解释了如何使用regex_search来做到这一点,但既然你没有,它应该是另一个话题,所以在这里,我希望你能回答:http:///stackoverflow.com/questions/9823367/regex-fetching-various-results-with-regex-search – Grego 2012-03-22 13:37:41