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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

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

25.06.2010, 19:55. Просмотров 1617. Ответов 7
Метки нет (Все метки)

прочитал статю http://www.opennet.ru/base/dev/pcre_cpp.txt.html про регулярные выражения в c++
неужели там мноо кода нужно писать?
нельзя ли if(preg_match("#\w{2,3}#",text,var))?
обязятаель компилить выражения и много кода писать как в той статье?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2010, 19:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос регулярные выражения (C++):

Регулярные выражения в g++ - C++
Привет всем! этот пример взял из http://www.cplusplus.com/reference/regex/regex_search/ и скомпилировал g++ . #include <iostream> ...

Регулярные выражения в с++ - C++
Рылся рылся, нигде не нашел... Кто нибудь, объясните: 1) как установить эту библиотеку Regex. 2) Как заставить её работать. 3) И...

Регулярные выражения с++ - C++
Пользователь должен ввести строки: фамилию(первая буква должна быть заглавной), дату рождения(по форме аа.аа.аааа), состояние здоровья(good...

Регулярные выражения - C++
Доброй ночи! Использую вот такой код void INITDIALOG(void* p){ char* bufer = new char; server.GetLocList(bufer); char * t =...

Регулярные выражения - C++
Здравствуйте, Надо заменить в тексте номер телефона формата (012) 345-67-89 на +380 12 345 67 89. Помогите, пожалуйста, как должны...

Регулярные выражения - C++
Всем доброе утро. Ребята подскажите что не так в выражении вот шаблон регулярного выражения ^*,"(*)","(*)" а срочку которую отправляю...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
25.06.2010, 20:43 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// match any format with the regular expression:
const boost::regex e("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z");
const std::string machine_format("\\1\\2\\3\\4");
const std::string human_format("\\1-\\2-\\3-\\4");
 
std::string machine_readable_card_number(const std::string s)
{
   return regex_replace(s, e, machine_format, boost::match_default | boost::format_sed);
}
 
std::string human_readable_card_number(const std::string s)
{
   return regex_replace(s, e, human_format, boost::match_default | boost::format_sed);
}
Это из документации библиотеки Regex, входящей в состав Boost.
0
Egeni
10 / 10 / 1
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
25.06.2010, 22:37 #3
Krist_ALL, нет не думаю что там необходимо много кода, думаю там просто много лишнего вперемешку с полезным

http://www.opennet.ru/base/dev/c_regex.txt.html
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
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>
#include <sys/socket.h>
#include <netinet/in.h>
 
#define MYREG1 "\\([0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*\\)/\\([0-9]*\\)"
 
void regerr_prt(regex_t *preg,int err)
{
char buf[512];
regerror(err,preg,buf,sizeof(buf)-1);
printf(__FUNCTION__":%s\n",buf);
}
 
regmatch_t rm[16];
main(int argn,char **argv)
{
regex_t reg1;
int err,i,cntip;
char buf[512];
 
if((err=regcomp(&reg1,MYREG1,0))) {
  regerr_prt(&reg1,err);
  abort();
  }
while(fgets(buf,sizeof(buf)-1,stdin)) {
  if(buf[strlen(buf)-1] == '\n') buf[strlen(buf)-1]=0;
  if(regexec(&reg1,buf,3,&rm[0],0)) continue;
  {
    char c;
    int ipm;
   buf[rm[1].rm_eo] = 0;
   buf[rm[2].rm_eo] = 0;
   inet_aton(&buf[rm[1].rm_so],(struct in_addr *)&ipr[cntip].inetnum);
   ipr[cntip].inetnum = htonl(ipr[cntip].inetnum);
   ipm=atoi(&buf[rm[2].rm_so]);
   ipr[cntip].inetmask = 0xfffffffful << (32 - ipm);
   cntip++;
   buf[rm[i].rm_eo] = c;
  }
 }
regfree(&reg1);
return 0;
0
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
26.06.2010, 00:10  [ТС] #4
слышал про boost.. а почему не pcre?
в моем примере все просто и ясно но в с++ это ппц с регулярками как я вижу.. мне ооч много нужно работать с ними но писать для каждой столько кода это ппц.
вот просто If(preg_match('#\w#',$a,$b))
это пример из пхп ...
0
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
26.06.2010, 02:50 #5
А написать руками функцию preg_match не прокатит?
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.06.2010, 02:57 #6
Krist_ALL, используй boost'ий regex_match.
0
Egeni
10 / 10 / 1
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
26.06.2010, 09:09 #7
использовать бустовский регекс, помойму это всеравно, что использовать для забивания гвоздей молоток, ручка которого обернута в наждачную бумагу
0
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
26.06.2010, 11:28 #8
Цитата Сообщение от Egeni Посмотреть сообщение
использовать для забивания гвоздей молоток, ручка которого обернута в наждачную бумагу
а что не так с ручкой обёрнутой наждачкой?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2010, 11:28
Привет! Вот еще темы с ответами:

Регулярные выражения - C++
Привет помогите составить регулярное выражение, чтобы парсить такую строку: , , результатом должно быть: a hello world any ...

Регулярные выражения - C++
Можете подсказать что это значит? &quot;Max-Forwards*(\d{3,}|7)&quot; я без понятия что это и откуда это( Добавлено через 4 минуты я уже...

Регулярные выражения. - C++
Здравствуйте всем! Имеется массив строк. Надо написать программу с функцией реализующей выявления соответствия между шаблоном допустим...

Регулярные выражения на C++ - C++
Здраствуйте, возникла необходимость использовать регурные выражения в Си++. Первое что пришло в голову переписать все на Qt например,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.06.2010, 11:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru