VS2008 tr1正则实现多个匹配

2011-03-15 wcdj

 

问题:
比如:"[0-9]{2}"匹配"01:23:09",分别为01, 23, 09,目前只能匹配出一个"01"。

方法1 :逐个匹配并输出。

方法2 :使用分组的方法。
正则写为:([0-9]{2}):([0-9]{2}):([0-9]{2})
结果 $0 表示整个公式,$1 小时 $2 分数 $3 秒数

#include <iostream> #include <string> #include <regex> using namespace std; using namespace std::tr1; int main() { // [1] const char* exp = "[0-9]{2}"; const char* str1 = "01:23:09"; regex rx1(exp); const cregex_token_iterator end; cregex_token_iterator i(str1, str1+strlen(str1), rx1); for(; i != end; ++i) cout << *i << " ";// 01 23 09 cout << "/n"; // use string const char* exp = "[0-9]{2}"; string str1 = "01:23:09";// string regex rx1(exp); const cregex_token_iterator end; cregex_token_iterator i(str1.c_str(), str1.c_str()+str1.size(), rx1);// string for(; i != end; ++i) cout << *i << " ";// 01 23 09 cout << "/n"; // [2] cmatch res; string str2 = "01:23:09"; regex rx2("(//d{2}):(//d{2}):(//d{2})"); regex_search(str2.c_str(), res, rx2); cout << res[1] << " " << res[2] <<" "<< res[3] << "/n";// 01 23 09 return 0; }

 

讨论


你可能感兴趣的:(VS2008 tr1正则实现多个匹配)