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

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

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

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

28.12.2013, 05:18. Просмотров 600. Ответов 2
Метки нет (Все метки)

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

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
#include<iostream>
#include<regex>
#include<fstream>
 
using namespace std;
 
int main()
{
    ifstream filereader;
    ofstream filewriter;
    filereader.open("input.txt");
    filewriter.open("output.txt");
// Регулярное выражение для поиска IP-адресов
regex ipReg("\\d1+(\\.\\d+)?*\\s?(kg|g|lb|t)") ;
 
 
 
while(!filereader.eof())
    {   
// Строка для поиска
         string str;
         filereader>>str;
 
if(regex_search(str,ipReg))
{
// Создаем итератор по этой последовательности
regex_iterator<string::iterator> rit(str.begin(), str.end(), ipReg);
// Итератор за пределы последовательности
regex_iterator<string::iterator> rend;
// Перебираем все элементы
while(rit != rend)
{
// Разыменовываем(получаем экземпляр класса match_result),
//вызываем метод str(), который возвращает строку
filewriter<<rit->str() << endl;
rit++;
}
 
}
}
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 05:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Регулярные выражения (C++):

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

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

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

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

регулярные выражения - C++
прочитал статю http://www.opennet.ru/base/dev/pcre_cpp.txt.html про регулярные выражения в c++ неужели там мноо кода нужно писать? ...

С++ и регулярные выражения - C++
С++ и регулярные выражения - возможно ли ето? Какие есть библиотеки или что-то в етом роде?

2
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
28.12.2013, 12:48 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <iterator>
#include <fstream>
#include <string>
#include <boost/regex.hpp>
#include <windows.h>
 
int main()
{
   SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
   std::ifstream ifs("D:/file.txt");
   if (!ifs.is_open())
   {
      std::cerr << "Ошибка открытия файла.\n";
      return 1;
   }
 
   using input = std::istreambuf_iterator<char>;
   const std::string text {input(ifs), input()};
 
   const boost::regex reg("(\\d+(\\.?\\d+)?\\s*(kg|g|lb|t))\\s*,");
   boost::smatch match;
   std::string::const_iterator pos = text.begin();
   while (boost::regex_search(pos, text.end(), match, reg))
   {
      if (!match.empty())
      {
         static std::ofstream ofs("D:/results.txt");
         //std::cout << "Finded: " << match[1] << std::endl;
         ofs << match[1] << "\n";
         pos = match[1].second;
      }
   }
 
   std::cout << "\n\nDone." << std::endl;
   return 0;
}
1
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
28.12.2013, 13:02 #3
greendaizer, regex в STL багнутый, используй boost как в посте выше.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2013, 13:02
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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