#include <iostream> #include <string> #include <regex> using namespace std; int main() { cout << regex_replace("123", regex("^|1"), "<$&>") << '\n' << '\n'; string s = "1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24,28,29,30,31,96,97,98,99,100,101,102"; cout << s << '\n'; s = regex_replace(s, regex("\\d+\\b"), "$&#$&-$&"); cout << s << '\n'; s = regex_replace(s + "0123456789", regex("(\\b(?=9.*(1))|0(?=.*(1))|1(?=.*(2))|2(?=.*(3))|3(?=.*(4))|4(?=.*(5))|5(?=.*(6))|6(?=.*(7))|7(?=.*(8))|8(?=.*(9))|9(?=.*(0)))(?=9*-)|\\d{10}$"), "$2$3$4$5$6$7$8$9$10$11$12"); cout << s << '\n'; s = regex_replace(s, regex("(#(\\d+)-\\d+,\\2\\b)+#\\d+|#\\d+-\\d+"), ""); cout << s << '\n'; return 0; }
Standard input is empty
<><1>23 1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24,28,29,30,31,96,97,98,99,100,101,102 1#1-1,3#3-3,4#4-4,5#5-5,6#6-6,7#7-7,8#8-8,10#10-10,12#12-12,16#16-16,17#17-17,20#20-20,21#21-21,22#22-22,23#23-23,24#24-24,28#28-28,29#29-29,30#30-30,31#31-31,96#96-96,97#97-97,98#98-98,99#99-99,100#100-100,101#101-101,102#102-102 1#2-1,3#4-3,4#5-4,5#6-5,6#7-6,7#8-7,8#9-8,10#11-10,12#13-12,16#17-16,17#18-17,20#21-20,21#22-21,22#23-22,23#24-23,24#25-24,28#29-28,29#30-29,30#31-30,31#32-31,96#97-96,97#98-97,98#99-98,99#1100-99,100#101-100,101#102-101,102#103-1021 1,3-8,10,12,16-17,20-24,28-31,96-99,100-1021