Categories: match

cpp-regex/

Ранее мы уже выясняли, что C++ никогда не умрет , и знать низкоуровневые вещи приходится , даже если фултайм пишешь на Scala. Поэтому я решил уделять некоторое время пописыванию небольших программок на C/C++. Тем более, что с тех пор, когда я активно этим делом увлекался, прошло уже лет семь-восемь и многое сильно изменилось. Так, например, в стандартной библиотеке C++ появились регулярные выражения, пример работы с которыми и приводится в этом посте.

Рассмотрим следующую проблему. Есть сервер, на котором поднят Nginx . Этот Nginx раздает какие-то mp3-файлы. Стоит задача определить, какие файлы и сколько раз были скачаны. Возможное решение на C++:

#include <string>
#include <iostream>
#include <map>
#include <regex>
#include <algorithm>

int main ( int argc, char ** argv ) {
const std :: regex re ( » » GET (?:http://.+?/)?(.+? \ .mp3) «»
«»HTTP/1 \ .[01] «» \ d{3} ( \ d+)»» ) ;
std :: map < std :: string std :: pair < long long >> stat ;
for ( std :: string line ; std :: getline ( std :: cin line ) ; ) {
std :: smatch match ;
if ( std :: regex_search ( line

admin

Share
Published by
admin
Tags: match

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

2 часа ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

2 часа ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

2 часа ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

2 часа ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

2 часа ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

2 часа ago