0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 26
1

Регулярные выражения. Парсинг текстовых файлов

30.03.2018, 19:02. Показов 1782. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу пример парсинга например, 2-го слова фразы "hello world 2018". Вроде бы просто, но никак не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    setlocale(0, "rus");
    string file = "Testing.txt";
    Text text(file);
    text.ReadFile(file);
 
    cmatch result;
    regex regular(".{6}" "(\\w{5})");
 
    regex_search(text.GetStr(0).c_str(), result, regular);
 
    for (int i = 0; i < result.size(); i++)
    {
        cout << result[i] << endl;
    }
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2018, 19:02
Ответы с готовыми решениями:

Регулярные выражения - парсинг группы символов
пишу транслятор. необходимо распарсить выражения вида &lt;=, &lt;, =, &gt;, =&gt;. использую boost::tokenizer,...

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

Регулярные выражения
Может кто нибудь подсказать реализацию регулярных выражений на С/С++?

Регулярные выражения
Здравствуйте, кто может помочь, нужно использовать регулярные выражения, чтобы при вводе...

6
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
30.03.2018, 19:08 2
C++
1
"^\\w+\\s+(\\w{5})"
0
0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 26
30.03.2018, 19:11  [ТС] 3
Не выходит. Насколько я понимаю, + значит 1 или более. А если я хочу именно 2 слово, мне надо указать количество любых символов до его начала
0
3 / 3 / 2
Регистрация: 18.09.2013
Сообщений: 30
30.03.2018, 19:43 4
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
#include <stdio.h>
#include <string.h>
 
int main()
{
    FILE *ofn;
 
    char* strfile = new char[100];
    
    fopen_s(&ofn, "mytext.txt", "r");
 
    fgets(strfile, 100, ofn);
 
    int len = strlen(strfile);
 
    int ch = ' ';
 
    char* ptrDo;
 
    for (int i = 0; i < len; i++)
    {
        if(strchr(strfile, ch) != NULL)
        {
            // Если нашли пробел, то получим указатель 
            // на первый символ второго слова
            ptrDo = strchr(strfile, ch) + 1;
        }
    }
    
    fclose(ofn);
 
    return 0;
}
Это конечно не регулярное выражение, но практическая польза будет...
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
30.03.2018, 19:46 5
выводит n - ное слово
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <regex>
#include <utility>
#include <cstdlib>
 
int main()
{
    system("chcp 1251");
    std::string str("hello, world 2018, Юцр");
    std::regex reg("[[:alpha:]]+|\\d+|[а-яА-ЯёЁ]+");
    int const n = 2;
    std::sregex_token_iterator ib(str.begin(), str.end(), reg), ie;
    std::advance(ib, n - 1);
    if (ib != ie)
    {
        std::cout << ib->str() << std::endl;
    }
        
}
0
3 / 3 / 2
Регистрация: 18.09.2013
Сообщений: 30
30.03.2018, 19:50 6
Можно и без цикла

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
include <stdio.h>
#include <string.h>
 
int main()
{
    FILE *ofn;
 
    char* strfile = new char[100];
    
    fopen_s(&ofn, "mytext.txt", "r");
 
    fgets(strfile, 100, ofn);
 
    int len = strlen(strfile);
 
    int ch = ' ';
 
    char* ptrDo;
 
        if(strchr(strfile, ch) != NULL)
        {
            ptrDo = strchr(strfile, ch) + 1;
        }
    
    
    fclose(ofn);
 
    return 0;
}
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
30.03.2018, 21:23 7
Цитата Сообщение от yegorf Посмотреть сообщение
Не выходит. Насколько я понимаю, + значит 1 или более. А если я хочу именно 2 слово
Что не выходит? Там и берётся второе слово.
0
30.03.2018, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2018, 21:23
Помогаю со студенческими работами здесь

Регулярные выражения
Как записать строки у тегов &lt;c&gt;&lt;/c&gt; и &lt;v&gt;&lt;/v&gt;? &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;...

Регулярные выражения
Создать регулярное выражение в котором будет кириллица латиница цифры пробел разделительные знаки...

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

Регулярные выражения
Помогите написать регулярку. Пишу на RE2. Если в тексте встречается ******.moikrug.ru то нужно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru