поиск в строке регулярного выражения с подстрокой c++

169
03 ноября 2018, 16:20

есть строка:

std::string init;
std::getline(std::cin,init);

как выполнить поиск подстроки, в которой будет содержаться нечто, соответствующее регулярному выражению, а затем еще какая-то подстрока?

например, нечто соответствующее такому регулярному выражению: "\s\d+\s", а сразу после подстрока: "пример."

необходимо определить местоположение(номер первого/последнего символа) такого вхождения

Answer 1

Стандартная библиотека с++ начиная с С++11 предоставляет средства для работы с регулярными выражениями. (Заголовочный файл: regex)

Пример использования.

#include <iostream> // std::cout
#include <regex>    // regex tools
#include <string>   // std::string
int main()
{
  std::string str{ "To be, or not to be, that is the question..." }; // исходная строка
  std::regex rex{ "(\\S+)" }; // регулярное выражение
  std::sregex_iterator beg{ str.cbegin(), str.cend(), rex }; // итератор
  // на начало последовательности найденных совпадений
  std::sregex_iterator end{};  // 'нулевой' итератор
  for (auto i = beg; i != end; ++i)
  { // проходим по всем совпадениям: выводим значения (*1),
    // их индексы относительно начала исходной строки
    // и длину совпадаемой строки
      std::cout << i->str() << "(" << i->position() << ") ["
          << i->length() << "]\n";
  }
}

(*1) - необходимо учесть что метод str возвращает новый объект std::string

И чтобы узнать индекс последнего символа вхождения можно провести нехитрые вычисления

auto last_index = i->position() + i->length() /* - 1 при надобности*/;

READ ALSO
Прочитать файл в k процессов

Прочитать файл в k процессов

Интересует такой вопрос: как прочитать файл, представленный потоком(std::ifstream) используя k процессов с использованием fork()? Знаю как обработать...

158
Глобальный хук на мышь

Глобальный хук на мышь

Консольное приложение:

345
C++ Загрузки статической библиотеки.

C++ Загрузки статической библиотеки.

Добрый день я являюсь новичком в области C++ и тут возникла интересная проблема совместимости новых библиотек со старыми ОСНапример есть...

163
Как импортировать в .odt? Qt

Как импортировать в .odt? Qt

Как лучше импортировать вodt из Qt? Есть много примеров как в Word импортировать, но в

142