Проверка на наличие подстроки с помощью std::regex

313
19 декабря 2016, 20:00

Здравствуйте. С помощью регулярных выражений я пытаюсь проверить наличие подстроки. Для этого пишу такой код:

std::regex search(searchOption, std::regex::icase);
if(regex_search(currentBook, search))return true;
else return false;
//searchOption - подстрока, которую нужно найти
//currentBook - строка, где нужно искать

Но если у меня searchOption будет равен "C++", то у меня вылетит эксепшн. Можно ли это как-то исправить?

Answer 1

Но если у меня searchOption будет равен "C++", то у меня вылетит эксепшн.

что за бред? зачем вы посылаете в std::regex подстроку? (вот вам и ошибка)

туда надо посылать регулярное выражение! тык 1, тык 2

а чтобы найти "C++" или "app" используйте find/ search
и т.п.

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

p.s. ну если вам надо найти "app" то ищите " app "

UPD

ну раз можно отправить и саму строку то значит ругается на "++"

если это так, то надо плюсы экранировать \\

READ ALSO
Регулярные выражения в C++

Регулярные выражения в C++

Здравствуйте! Возникла необходимость в написании парсера на C++На входе имеем два файла, в одном лежат входные данные (которые мы и будем проверять),...

278
Реализация cat file | grep

Реализация cat file | grep

Здравствуйте! Как с помощью C++ реализовать передачу данных из потока? К примеру, команда grep получает данные из cat: cat file | grep Компилятор gcc, заранее...

267
Tcp в linux, программирование на с++

Tcp в linux, программирование на с++

Есть проблема: Программа работает с большим количеством клиентов и выделяет большое количество портовДля каждого клиента выделяется один...

264