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

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

Восстановить пароль Регистрация
 
greendaizer
0 / 0 / 0
Регистрация: 20.01.2013
Сообщений: 70
28.12.2013, 05:18     Регулярные выражения #1
Ребят, у меня тут проблемы. В файле 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;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 05:18     Регулярные выражения
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 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;
}
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
28.12.2013, 13:02     Регулярные выражения #3
greendaizer, regex в STL багнутый, используй boost как в посте выше.
Yandex
Объявления
28.12.2013, 13:02     Регулярные выражения
Ответ Создать тему
Опции темы

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