例子:正則表達式在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