C++ provides only 4 anchors:
^
which asserts the start of the string$
which asserts the end of the string\\b
which asserts a \\W
character or the beginning or end of the string\\B
which asserts a \\w
characterLet’s say for example we want to capture a number with it’s sign:
auto input = "+1--12*123/+1234"s;
smatch sm;
if(regex_search(input, sm, regex{ "(?:^|\\\\b\\\\W)([+-]?\\\\d+)" })) {
do {
cout << sm[1] << endl;
input = sm.suffix().str();
} while(regex_search(input, sm, regex{ "(?:^\\\\W|\\\\b\\\\W)([+-]?\\\\d+)" }));
}
An important note here is that the anchor does not consume any characters.