1: //learn_regex4.cpp 3: #include <iostream> 4: #include <string> 5: #include <regex> 6: using namespace std; 8: int main() 9: { 10: cout << boolalpha; 12: string ruler("01234567890123456789"); 13: string data("12abc379gfehd3456"); 14: string pattern("([a-f]+)(\\d{2})"); 15: regex r(pattern); 17: cout << string(20,'=') << endl; 18: cout << ruler << endl; 19: cout << data << endl; 20: cout << pattern << endl; 21: cout << string(20,'=') << endl; 23: sregex_iterator i(data.begin(), data.end(), r), end; 24: while (i != end) 25: { 26: cout << i->str(0) << endl; 27: cout << i->prefix() << endl; 28: cout << i->suffix() << endl; 29: cout << string(20,'.') << endl; 30: cout << i->str(0) << endl; 31: cout << i->position(0) << endl; 32: cout << i->length(0) << endl; 33: cout << i->str(1) << endl; 34: cout << i->position(1) << endl; 35: cout << i->length(1) << endl; 36: cout << i->str(2) << endl; 37: cout << i->position(2) << endl; 38: cout << i->length(2) << endl; 39: cout << i->str(3) << endl; 40: cout << i->position(3) << endl; 41: cout << i->length(3) << endl; 42: cout << i->str(4) << endl; 43: cout << i->position(4) << endl; 44: cout << i->length(4) << endl; 45: cout << string(20,'-') << endl; 46: ++i; 47: } 48: } 49: /*Output: 50: ==================== 51: 01234567890123456789 52: 12abc379gfehd3456 53: ([a-f]+)(\d{2}) 54: ==================== 55: abc37 56: 12 57: 9gfehd3456 58: .................... 59: abc37 60: 2 61: 5 62: abc 63: 2 64: 3 65: 37 66: 5 67: 2 69: 17 70: 0 72: 17 73: 0 74: -------------------- 75: d34 76: 9gfeh 77: 56 78: .................... 79: d34 80: 12 81: 3 82: d 83: 12 84: 1 85: 34 86: 13 87: 2 89: 17 90: 0 92: 17 93: 0 94: -------------------- 95: */