0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 87

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

21.09.2019, 20:58. Показов 795. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как из этой строки вытянуть png с помощью регулярки, кроме png может быть другой тип, "image/" всегда неизменна

HTTP/1.1 200 OK
Server: ngjit
Connection: keep-alive
Keep-Alive: timeout=60
Set-Cookie: __ddg_=ECD073B191D4A1D4C8E97EABA780A4482 9F703C8; path=/; Expires=Wed, 01 Jan 2022 00:00:00 GMT
Date: Sat, 21 Sep 2019 09:13:23 GMT
Content-Type: image/png
Last-Modified: Sat, 26 Jul 2014 21:57:17 GMT
ETag: "53d4243d-2aec"
Expires: Fri, 20 Dec 2019 09:13:23 GMT
Cache-Control: max-age=7776000
Accept-Ranges: bytes
Age: 3425
Transfer-Encoding: chunked
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2019, 20:58
Ответы с готовыми решениями:

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

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

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

4
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
21.09.2019, 21:36
регулярка

image\\/([a-zA-Z]+)


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
#include <string>
#include <regex>
#include <iostream>
 
int main()
{
    std::string text =R"(
        HTTP/1.1 200 OK
Server: ngjit
Connection: keep-alive
Keep-Alive: timeout=60
Set-Cookie: __ddg_=ECD073B191D4A1D4C8E97EABA780A44829F703C8; path=/; Expires=Wed, 01 Jan 2022 00:00:00 GMT
Date: Sat, 21 Sep 2019 09:13:23 GMT
Content-Type: image/png
Last-Modified: Sat, 26 Jul 2014 21:57:17 GMT
ETag: "53d4243d-2aec"
Expires: Fri, 20 Dec 2019 09:13:23 GMT
Cache-Control: max-age=7776000
Accept-Ranges: bytes
Age: 3425
Transfer-Encoding: chunked
    )";
 
    std::regex reg("image\\/([a-zA-Z]+)");
    std::smatch matches;
 
    if(std::regex_search(text, matches, reg))
    {
        std::cout << "Match found\n";
         std::cout << matches[1].str() << "\n";
    } else {
       std::cout << "Match not found\n";
    }
}
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 30
25.09.2019, 11:34
Доброго времени суток, бьюсь с регулярками, и вроде их победил и дело осталось за малым, но не могу решить до конца.
Мне необходимо вывести из файла все предложения, не содержащие запятых.
Регулярные выражения работают как надо, проверял, но не могу правильно вывести.
Как перестроить цикл или что использовать для вывода только тех предложений, что без запятых.

Кликните здесь для просмотра всего текста
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 <iostream>
#include <string>
#include <fstream>
#include <regex>
 
int main() {
    setlocale(LC_ALL, "Rus");
 
    std::string str;
    std::ifstream fileIn("Test.txt"); // Открываем файл
    std::regex myRegex = std::regex(R"([^.]*.\s*)"); // Любое предложение до точки
    std::regex dotRegex = std::regex(R"([^.]*,[^.]*.\s*)"); // Любое предложение с запятой до точки
    std::cmatch myRes, dotRes; // Храним результаты
    int n = 0;
    if (!fileIn)
    {
        std::cerr << "Невозможно открыть файл";
        return 1;
    }
    while (!fileIn.eof())
    {
        if (!fileIn.eof()) {
            getline(fileIn, str); // Считываем текст файла
            const char* Txt = str.c_str(); // regex_match не принимает чистый string
            while (regex_search(Txt, myRes, myRegex)) { // Разбиваем на отдельные предложения
                n++;
                auto resstr = myRes.str(); 
                std::cout << n << ":\t" << resstr << std::endl; // Выводим разбитые предложения
                Txt += resstr.length(); // Отступаем для дальнейшего поиска
 
 
                // if (regex_match(Txt, dotRegex)) {
                //  break;
                //}
 
            }
        }
    }
    std::system("pause");
}
0
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
25.09.2019, 14:10
Цитата Сообщение от I am shocked Посмотреть сообщение
вывести из файла все предложения, не содержащие запятых.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    std::ifstream fileIn("Test.txt"); // Открываем файл
    std::regex reg = std::regex(R"([A-Z][^\.!?,]*[\.!?])"); // Любое предложение без запятой 
 
    int n = 0;
    if (!fileIn)
    {
        std::cerr << "Could not open input file.";
        return 1;
    }
 
       // Считываем текст файла
    std::string str((std::istreambuf_iterator<char>(fileIn)),std::istreambuf_iterator<char>()); 
       // Выводим разбитые предложения
    for (std::sregex_iterator it = std::sregex_iterator(str.begin(), str.end(), reg); it != std::sregex_iterator();++it)
    {
        n++;
        std::cout << n << ": " << (*it).str()  << '\n';
    }
Добавлено через 6 минут
можно без регулярки считывать предложения обрезая по точке

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    std::string str;
    std::ifstream fileIn("Test.txt"); // Открываем файл
    int n = 0;
    if (!fileIn)
    {
        std::cerr << "Could not open input file.";
        return 1;
    }
    while (std::getline(fileIn, str, '.'))
    {
        if (str.find(',') == std::string::npos)
        {
            n++;
            str += '.'; // добавить отрезанную точку
            std::cout << n << ":\t" << str << std::endl; // Выводим разбитые предложения  
        }
    }
1
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 30
26.09.2019, 14:28
Цитата Сообщение от QuestionAnd Посмотреть сообщение
можно без регулярки
Про такой способ знаю, но нужно через регулярки именно.

Спасибо за первый пример, позже попробую, выглядит верно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2019, 14:28
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru