Форум программистов, компьютерный форум CyberForum.ru

Regex в С++ - C++

Восстановить пароль Регистрация
 
vadimmelnyk
2 / 2 / 0
Регистрация: 17.12.2012
Сообщений: 13
02.10.2013, 03:26     Regex в С++ #1
Здравствуйте!
Я хочу найти все вхождения подстроки типа 1[0]+1 в строку.
C++
1
2
3
4
5
6
7
std::string str =  "0011011000001";
std::regex rx   ("1[0]+1");
std::smatch res;
std::regex_search(str, res, rx);
 
for (size_t i=0; i<res.size(); i++)
std::cout<<res[i]<<std::endl;
Но код не работает. В чем может быть проблема?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 03:26     Regex в С++
Посмотрите здесь:

C++ std::regex и boost::regex
C++ Регулярные выражения (regex)
C++ <regex> гайд
Regex в char C++
C++ [C++11] regex constructor исключение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.10.2013, 11:32     Regex в С++ #2
Думаю, что так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <boost/regex.hpp>
 
int main()
{
   const std::string s =  "0011011000001";
   const boost::regex re("10+1");
   boost::smatch matches;
 
   std::string::const_iterator pos = s.begin();
   while (boost::regex_search(pos, s.end(), matches, re))
   {
      if (!matches.empty())
      {
         std::cout << matches[0] << std::endl;
         pos = matches[0].second;
      }
   }
 
   std::cout << "\nDone." << std::endl;
   return 0;
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
02.10.2013, 11:48     Regex в С++ #3
Как именно "код не работает"? И на каком компиляторе?

Я сталкивался с похожей проблемой. Код компилируется, но при попытке запустить выбрасывает исключение типа "функция не поддерживается" (точно не помню уже, время прошло...) Причина оказалась в том, что хотя в Стандарте C++11 regex появился, не все компиляторы пока еще поддерживают Стандарт в полном объеме...
vadimmelnyk
2 / 2 / 0
Регистрация: 17.12.2012
Сообщений: 13
02.10.2013, 12:03  [ТС]     Regex в С++ #4
Спасибо,
Ваш пример работает. Только что сам столкнулся с проблемой компилятора. Отослал задачу на проверку, а версия компилятора на сервере старая.
Yandex
Объявления
02.10.2013, 12:03     Regex в С++
Ответ Создать тему
Опции темы

Текущее время: 21:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru