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

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

Войти
Регистрация
Восстановить пароль
 
hromjo
0 / 0 / 0
Регистрация: 04.04.2010
Сообщений: 82
#1

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

14.08.2010, 21:51. Просмотров 1071. Ответов 9
Метки нет (Все метки)

Помогите написать регулярку. Пишу на RE2.
Если в тексте встречается ******.moikrug.ru то нужно вытащить
то что под звездочками. Буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2010, 21:51     Регулярные выражения
Посмотрите здесь:

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

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

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

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

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

Регулярные выражения - C++
Ребят, у меня тут проблемы. В файле input.txt есть строчки, в которых нужно найти вес, т.е., например, 221 kg, 45g и отправить их в аутпут....

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт CЭксперт С++
9465 / 5478 / 927
Регистрация: 25.07.2009
Сообщений: 10,502
15.08.2010, 04:02     Регулярные выражения #2
Цитата Сообщение от hromjo Посмотреть сообщение
Пишу на RE2.
А что это?
Вот на С на всякий случай
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define BUFLEN 256
#define DELIM " \t\n"
#define TMPL ".moikrug.ru"
 
int main(void){
    char buf[BUFLEN], fnd[BUFLEN], * pBuf, * pFnd;
    
    while ( printf("\n> ") && fgets(buf, BUFLEN, stdin) ){
        if ( *buf == '\n' )
            break;
        for ( pBuf = strtok(buf, DELIM); pBuf; pBuf = strtok(NULL, DELIM) ){
            if ( pFnd = strstr(pBuf, TMPL) ){
                strncpy(fnd, pBuf, pFnd - pBuf);
                printf("%s\n", fnd);
            }
        }
    }
    exit(EXIT_SUCCESS);
}
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2010, 05:15     Регулярные выражения #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstring>
#include <iostream>
 
using namespace std;
 
int main(int,char**){
  const char* origin = ".moikrug.ru";
  char str[] = "sfjlsdjflwer wer .moikrug.ru-sdfs fs";
  unsigned stat = 0, end_stat = strlen(origin), pos = 0, end = strlen(str);
  for( ; pos<end && stat!=end_stat; ++pos ){
    if( origin[stat] == str[pos] ){ 
      ++stat; 
    }else{
      stat = 0;
    }
  }
  if( stat == end_stat ){
    str[pos-end_stat] = 0;
    cout << str << endl;
  }
  return 0;
}
если интерпретировать это как конечный автомат, для распознавания регулярных выражений
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
15.08.2010, 06:11     Регулярные выражения #4
hromjo, я так понял, под звездочками может скрываться буквы или цифры:
Код
"(\\w+)\\.moikrug\\.ru"
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
15.08.2010, 06:33     Регулярные выражения #5
Пример на perl
Perl 6
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
 
while(<STDIN>)
{
    chomp;
    
    say (m/(\w+)\.moikrug\.ru/ ? "Captured string: '$1'" : "No capture");
}
Регулярные выражения
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
15.08.2010, 06:34     Регулярные выражения #6
круто, если говорить про перл, эта задача даже на вступление к регэкспам не тянет
Nameless One
15.08.2010, 06:36
  #7

Не по теме:

alex_x_x, ну да

hromjo
0 / 0 / 0
Регистрация: 04.04.2010
Сообщений: 82
15.08.2010, 09:17  [ТС]     Регулярные выражения #8
alex_x_x, спс. Но наверно я задал вопрос не так.
Мне нужно вытащить логин, то есть:
http://*******.moikrug.ru.
Вот так.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
15.08.2010, 10:12     Регулярные выражения #9
Цитата Сообщение от hromjo Посмотреть сообщение
alex_x_x, спс. Но наверно я задал вопрос не так.
Мне нужно вытащить логин, то есть:
http://*******.moikrug.ru.
Вот так.
Тогда регулярное выражение для С должно иметь вид:
Код
"http://(\\w+)\\.moikrug\\.ru"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2010, 01:10     Регулярные выражения
Еще ссылки по теме:

Регулярные выражения с++11 - C++
Просветите, пожалуйста, как из следующей строки &quot;123&lt;tag&gt;456&lt;/tag&gt;789&lt;tag&gt;987&lt;/tag&gt;654321&quot; с помощью регулярного выражения напечатать &quot;456...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
16.08.2010, 01:10     Регулярные выражения #10
на си

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
#include <stdio.h>
#include <assert.h>
 
const char* origin = "http://.moikrug.ru", *str = "http http://http://hello.world.moikrug.ru.krug.moikrug.ru";
const unsigned BEGIN = 0, END_HTTP = 6, DOMEN = 7, END = 17;
 
void find_recurs( unsigned pos, unsigned state, unsigned start_dom, unsigned end_dom ){
  for( ; str[pos] ; ++pos ){
    if( BEGIN == state && origin[state] == str[pos] ){
      find_recurs( pos+1, BEGIN+1, 0, 0 );
    }else if( state>BEGIN && state<=END_HTTP ){
      if( origin[state] != str[pos] ){
        return;
      }else{
        if( END_HTTP == state++ ){ 
          start_dom = pos+1; 
        }
      }
    }else if( DOMEN == state && origin[state] == str[pos] ){
      find_recurs( pos+1, DOMEN+1, start_dom, pos );
    }else if( state>DOMEN && state <= END ){
      if( origin[state] != str[pos] ){
        return;
      }else{
        if( END == state++ ){ 
          assert( start_dom && end_dom && end_dom>start_dom );
          fwrite( str + start_dom, end_dom - start_dom, 1, stdout );
          putc( '\n', stdout );
          return;           
        }
      }      
    }
  }
}
 
 
int main(){
  find_recurs( 0, BEGIN, 0, 0 );
  return 0;
}
[alexxx@localhost ~]$ ./a.out
http://hello.world
http://hello.world.moikrug.ru.krug
hello.world
hello.world.moikrug.ru.krug

Добавлено через 51 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
#include <boost/regex.hpp>
#include <string>
#include <iostream>
 
int main(int argc, char* argv[]) 
{ 
        boost::regex e(".*http://(.*)\\.moikrug\\.ru.*",boost::regex::perl|boost::regex::icase); 
        std::string str = "hello world!!!dferwerer ewrewr [url]http://hell.is.here.moikrug.ru[/url] 23434"; 
        std::cout << regex_replace(str, e, "$1"); 
        return 0; 
}
можно так, но так неинтересно))
Yandex
Объявления
16.08.2010, 01:10     Регулярные выражения
Ответ Создать тему
Опции темы

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