@lex63
Начинающий web-разработчик

Regex. Как сделать разбор строки с конца?

Здравствуйте!
Есть строка из лога.
Необходимо её разобрать с помощью регулярных выражений.
Как сделать так, чтобы разбор строки начинался с конца?
Вопрос может глупый и простой, но не смог найти ответ.
Прошу помощи знатоков.

Пример для более конкретного понимания необходимого.
Строка из лога Apache
127.0.0.1 - - [28/Jul/2006:10:27:32 -0300] "GET /hidden/ HTTP/1.0" 404 7218
Нужно найти значения в таком порядке:
Ответ сервера: 404
Тип запроса: GET
Дата: 28/Jul/2006:10:27:32 -0300
IP-адрес: 127.0.0.1
  • Вопрос задан
  • 230 просмотров
Решения вопроса 3
@Zolg
для задачи из примера абсолютно не нужно вычислять регулярку справа налево
нужно просто захваченные группы вывести в нужном вам порядке не $1 $2 $3, а $3 $1 $2, к примеру. а еще лучше сделать их именованными
Ответ написан
@Nujabes37
:DEATH
Хотите прикол ?))

Вот, что лежит в моем test.txt:

127.0.0.1 - - [28/Jul/2006:10:27:32 -0300] "GET /hidden/ HTTP/1.0" 404 7218
127.0.4.3 - - [28/Jul/2006:10:27:32 -0300] "GET /hidden/ HTTP/1.0" 404 7218
127.0.0.2 - - [30/Jun/2026:10:27:32 -0300] "POST /hidden/ HTTP/1.0" 200 7218


Запускаем следующую команду:

cat test.txt | sed 's/.*\(^[0-9]*.[0-9]*.[0-9]*.[0-9]*\)\s-\s-\s\[\([0-9]*\/[A-Z][a-z]*\/[0-9]*\:[0-9]*\:[0-9]*\:[0-9]*\s\-[0-9]*\)]\s\"\([A-Z]*\s\)\/[a-z]*\/\s[A-Z]*\/[0-9].[0-9]"\s\([0-9]*\s\).*/Ответ сервера: \4\nТип запроса: \3\nДата: \2\nIP-адрес: \1\n/g'


Получаем:

Тип запроса: GET
Дата: 28/Jul/2006:10:27:32 -0300
IP-адрес: 127.0.0.1

Ответ сервера: 404
Тип запроса: GET
Дата: 28/Jul/2006:10:27:32 -0300
IP-адрес: 127.0.4.3

Ответ сервера: 200
Тип запроса: POST
Дата: 30/Jun/2026:10:27:32 -0300
IP-адрес: 127.0.0.2


Читал ваши комментарии, так и не понял зачем вам начинать поиск с конца строки :/
Ответ написан
DevMan
@DevMan Куратор тега Регулярные выражения
чот я, как и другие, не понял зачем читать с конца. выводить же можно как угодно.
вот вам пример.

да и саму регулярку можно спокойно упростить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
...нечеловечески он пел, нечеловечески танцуя...
вопрос глупый: регулярки "с конца" решаются классически - "переворачиваются и сначала", в основном это в поиске,например" *ля" если найти для всяких "*ланов"

можешь посмотреть, как справились коллеги
https://gist.github.com/hreeder/f1ffe1408d296ce0591d
https://github.com/richardARPANET/nginx-access-log...
https://coderwall.com/p/snn1ag/regex-to-parse-your...
https://stackoverflow.com/questions/56480343/parsi...

+ можно дать админу пива / по шапке и попросить настроить в более удобном виде

+ еще есть техники с простым split
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Priceva Москва
от 100 000 до 140 000 руб.
Factory5 Москва
До 200 000 руб.
от 150 000 до 200 000 руб.