Поле size класса smatch
Поле size класса smatch возвращает
количество найденных совпадений, которые были
получены в результате работы алгоритма
regex_match или regex_search.
Поле не принимает параметров и возвращает
значение типа size_t. Оно удобно для
перебора всех найденных совпадений в цикле.
Синтаксис
smatch_name.size()
Пример
Давайте найдем все совпадения с шаблоном
"\\d+" в строке и выведем их количество:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "12345 abcde 67890";
regex pattern("\\d+");
smatch matches;
if (regex_search(str, matches, pattern)) {
cout << matches.size() << endl;
}
return 0;
}
Результат выполнения кода:
1
Пример
Давайте найдем все числа в строке с помощью
sregex_iterator и выведем общее
количество найденных совпадений:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "12345 abcde 67890";
regex pattern("\\d+");
sregex_iterator it(str.begin(), str.end(), pattern);
sregex_iterator end;
int count = 0;
for (; it != end; ++it) {
count += it->size();
}
cout << count << endl;
return 0;
}
Результат выполнения кода:
2