Метод length
Метод length класса smatch возвращает
количество символов в найденном совпадении.
Если передать в качестве параметра номер группы,
метод вернет длину этой конкретной группы.
Без параметров метод возвращает длину всего совпадения.
Синтаксис
smatch_var.length([group_index])
Пример
Давайте найдем слово в строке и выведем его длину:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abcde 12345";
regex reg("\\w+");
smatch res;
if (regex_search(str, res, reg)) {
cout << res.length() << endl;
}
return 0;
}
Результат выполнения кода:
5
Пример
Давайте используем группы захвата и выведем длину каждой из них:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abcde 12345";
regex reg("(\\w+) (\\w+)");
smatch res;
if (regex_search(str, res, reg)) {
cout << "Total: " << res.length() << endl;
cout << "Group 1: " << res.length(1) << endl;
cout << "Group 2: " << res.length(2) << endl;
}
return 0;
}
Результат выполнения кода:
"Total: 11"
"Group 1: 5"
"Group 2: 5"