Привет всем! Как посчитать количество вхождений паттерна regex в сроке? Язык С++
std::string subject("This is a test test");
try {
std::regex re("\\w+");
std::sregex_iterator next(subject.begin(), subject.end(), re);
std::sregex_iterator end;
while (next != end) {
std::smatch match = *next;
std::cout << match.str() << "\n";
std::cout << match.size() << " count" << std::endl;
next++;
}
}
Используйте std::distance:
Возвращает количество элементов между first и last.
Вот пример:
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
std::regex re("\\w+");
std::string subject("This is a test test");
std::ptrdiff_t match_count(std::distance(
std::sregex_iterator(subject.begin(), subject.end(), re),
std::sregex_iterator()));
std::cout << match_count << std::endl;
return 0;
}
Демо на IDEONE.com
Всего 5 вхождений искомого шаблона.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости