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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
23.07.2013, 16:42     Регулярные выражения в g++ #1
Привет всем! этот пример взял из http://www.cplusplus.com/reference/regex/regex_search/ и скомпилировал g++ .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <regex>
 
int main ()
{
  std::string s ("this subject has a submarine as a subsequence");
  std::smatch m;
  std::regex e ("\\b(sub)([^ ]*)");   // matches words beginning by "sub"
 
  std::cout << "Target sequence: " << s << std::endl;
  std::cout << "Regular expression: /\\b(sub)([^ ]*)/" << std::endl;
  std::cout << "The following matches and submatches were found:" << std::endl;
 
  while (std::regex_search (s,m,e)) {
    for (auto x:m) std::cout << x << " ";
    std::cout << std::endl;
    s = m.suffix().str();
  }
 
  return 0;
}
и когда скомпилировал, появляется такое сообщение. пробывал использовать рег выражения из lib boost (пример взял из http://habrahabr.ru/post/64226/ ) появляется тоже ошибки, типа в boost исходниках содержат какието ошибки... как это исправить ?
Миниатюры
Регулярные выражения в g++  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 16:42     Регулярные выражения в g++
Посмотрите здесь:

C++ регулярные выражения
[C++] Регулярные выражения C++
Регулярные выражения C++
С++ и регулярные выражения C++
C++ Регулярные выражения в с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.07.2013, 16:58     Регулярные выражения в g++ #2
septe-mber, gcc не умеет работать с regex. Там стоит заглушка, которая просто кидает исключение.
С бустом все работает.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
23.07.2013, 17:03     Регулярные выражения в g++ #3
septe-mber, есть QRegExp
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
23.07.2013, 18:08     Регулярные выражения в g++ #4
ForEveR, какая-такая заглуха? У меня работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>
#include <regex>
 
int main()
{
    if ( std::regex_match( "subject", std::regex( "(sub)(.*)" ) ) )
        std::cout << "string literal matched\n";
 
    std::string s( "subject" );
    std::regex e( "(sub)(.*)" );
    if ( std::regex_match( s, e ) )
        std::cout << "string object matched\n";
 
    if ( std::regex_match( s.begin(), s.end(), e ) )
        std::cout << "range matched\n";
 
    std::cmatch cm;    // same as std::match_results<const char*> cm;
    std::regex_match( "subject", cm, e );
    std::cout << "string literal with " << cm.size() << " matches\n";
 
    std::smatch sm;    // same as std::match_results<string::const_iterator> sm;
    std::regex_match( s, sm, e );
    std::cout << "string object with " << sm.size() << " matches\n";
 
    std::regex_match( s.cbegin(), s.cend(), sm, e );
    std::cout << "range with " << sm.size() << " matches\n";
 
    // using explicit flags:
    std::regex_match( "subject", cm, e, std::regex_constants::match_default );
    std::cout << "the matches were: ";
    for ( unsigned i = 0; i < sm.size(); ++i ) {
        std::cout << "[" << sm[i] << "] ";
    }
    std::cout << std::endl;
 
    return 0;
}
Кликните здесь для просмотра всего текста
string literal matched
string object matched
range matched
string literal with 3 matches
string object with 3 matches
range with 3 matches
the matches were: [subject] [sub] [bject]


Добавлено через 20 минут
Да, действительно, реализация regex в GCC пока забагованая...

http://stackoverflow.com/questions/12530406/is-gcc4-7-buggy-about-regular-expressions
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
23.07.2013, 22:35  [ТС]     Регулярные выражения в g++ #5
ForEveR, c бустом тоже проблемы . незнаю может у меня что не так ...
опять же этот пример взял из http://habrahabr.ru/post/64226/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <boost/regex.hpp>
 
int main()
{
    std::string xStr("AAAA-12222-BBBBB-44455");
    boost::regex xRegEx("(\\w+)-(\\d+)-(\\w+)-(\\d+)");
    boost::smatch xResults;
    std::cout << "==========================Results============================== \n";
    std::cout << "Does this line match our needs? " << std::boolalpha << boost::regex_match(xStr,  xResults, xRegEx) << "\n";
    std::cout << "Print entire match:\n " << xResults[0] << std::endl;
    std::cout << "Print the former string into another format:\n" << xResults[1] << "+"
                                    << xResults[2] << "+"
                                    << xResults[3] << "+"
                                    << xResults[4] << std::endl;
 
    return 0;
}
при компиляции вылазит куча ошибок
Миниатюры
Регулярные выражения в g++  
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.07.2013, 22:39     Регулярные выражения в g++ #6
Цитата Сообщение от ForEveR Посмотреть сообщение
septe-mber, gcc не умеет работать с regex.
можно поподробнее?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
23.07.2013, 22:44     Регулярные выражения в g++ #7
Плохо видны ошибки, но попробуй перед #include <boost/regex.hpp> определить макросы:
#define BOOST_THREAD_USE_LIB
#define BOOST_REGEX_MATCH_EXTRA


Цитата Сообщение от dr.curse Посмотреть сообщение
можно поподробнее?
http://gcc.gnu.org/onlinedocs/libstd...tatus.iso.2011
http://stackoverflow.com/questions/1...with-c11-regex
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
23.07.2013, 22:55  [ТС]     Регулярные выражения в g++ #8
ForEveR, совсем забыл прописать в pro файле LIBS += -lboost_regex ...все работает отлично...
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.07.2013, 22:57     Регулярные выражения в g++ #9
Цитата Сообщение от castaway Посмотреть сообщение
http://gcc.gnu.org/onlinedocs/libstd...tatus.iso.2011
http://stackoverflow.com/questions/1...with-c11-regex
но оне же говорили что в gcc 4.8.x будет полная поддержка с++11
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
23.07.2013, 23:06     Регулярные выражения в g++ #10
Цитата Сообщение от dr.curse Посмотреть сообщение
но оне же говорили что в gcc 4.8.x будет полная поддержка с++11
Я, честно говоря, не знаю кто там что говорил, но факт остается фактом.

Sadly GCC doesn’t have a working regex implementation yet, but clang and Visual Studio do...
А вот Clang вроде как умеет.
( http://www.devalot.com/articles/2011/10/cxx-regex.html )
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.07.2013, 00:05     Регулярные выражения в g++ #11
Цитата Сообщение от dr.curse Посмотреть сообщение
но оне же говорили что в gcc 4.8.x будет полная поддержка с++11
Полная поддержка языка, не библиотеки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2013, 00:19     Регулярные выражения в g++
Еще ссылки по теме:

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

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
24.07.2013, 00:19     Регулярные выражения в g++ #12
Цитата Сообщение от ForEveR Посмотреть сообщение
Полная поддержка языка, не библиотеки.
спасибо понял свою ошибку
Yandex
Объявления
24.07.2013, 00:19     Регулярные выражения в g++
Ответ Создать тему
Опции темы

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