Поле empty класса smatch
Поле empty класса smatch возвращает булево значение true,
если объект smatch не содержит результатов успешного поиска
совпадений (то есть поиск не был выполнен или завершился неудачей),
и false, если объект содержит хотя бы одно найденное совпадение.
Это поле не принимает параметров и доступно только для чтения.
Проверка empty обычно выполняется перед обращением к элементам
объекта smatch, чтобы избежать ошибок доступа к несуществующим
совпадениям.
Синтаксис
smatch_name.empty
Пример
Давайте выполним поиск и проверим, содержит ли объект smatch
результаты совпадений, с помощью поля empty:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
regex reg("cd");
smatch res;
regex_search(str, res, reg);
if (!res.empty()) {
cout << "Match found: " << res[0] << endl;
} else {
cout << "No match" << endl;
}
return 0;
}
Результат выполнения кода:
"Match found: cd"
Пример
Давайте выполним поиск шаблона, который не встречается в строке,
и убедимся, что поле empty вернёт true:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
regex reg("xyz");
smatch res;
regex_search(str, res, reg);
if (res.empty()) {
cout << "No match" << endl;
} else {
cout << "Match found: " << res[0] << endl;
}
return 0;
}
Результат выполнения кода:
"No match"