Как получить записи, не заканчивающиеся на определённые фразы, с помощью регулярных выражений

Рейтинг: 0Ответов: 5Опубликовано: 26.03.2023

Есть следующие записи в логах:

26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200

Как получить с помощью регулярных выражений url-адреса, которые не заканчиваются на .css, .js, .png,

Ответы

▲ 1

Кажется основной вопрос тут - с помощью чего получить-то надо? Например просто bash?

Загоняем ваш пример в log.txt:

26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200

Прогоним его через grep:

$ cat log.txt | grep -E -v "\.(css|js|png) +"

26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
▲ 0

Если используемый язык позволяет предпросмотр назад переменной длины, то так:

`26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200`
.replace(/^.*$(?<!\.(js|css)\s\d+$)/gmi, x => console.log(x))

▲ 0

`26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200`
.replace(/^([^|]+\|){2}\s\w+\s((?!\.(js|css)).)+\s\d+$/gmi, x => console.log(x))

▲ 0

const str = `26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200`;

console.log(str.replace(/.+?\.(css|js)\s.+/g, ''));

▲ 0

Как получить с помощью регулярных выражений url-адреса, которые не заканчиваются на .css, .js, .png,

Для получения именно УРЛ, которые нужны - предложу такой вариант...

const str = `26-03-2023 19:05:37 | INFO | GET /manifest.json 200
26-03-2023 19:05:38 | INFO | GET /static/css/main.b4d87dff.css 200
26-03-2023 19:05:38 | INFO | GET /static/js/main.8372ba98.js 200
26-03-2023 19:05:45 | INFO | GET /static/media/primeicons.78172950b335ccdb94e2.woff2 200
26-03-2023 19:05:45 | INFO | GET /favicon.ico 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/groups 200
26-03-2023 19:05:45 | INFO | POST /available/groups 200
26-03-2023 19:05:45 | INFO | OPTIONS /available/teachers 200
26-03-2023 19:05:45 | INFO | POST /available/teachers 200
26-03-2023 19:05:46 | INFO | GET /favicon-32x32.png 200
26-03-2023 19:05:46 | INFO | GET /favicon-16x16.png 200
26-03-2023 19:06:05 | INFO | OPTIONS /merged 200
26-03-2023 19:06:05 | INFO | POST /merged 200
26-03-2023 19:11:23 | INFO | GET /static/js/main.6b942624.js 200
26-03-2023 19:11:23 | INFO | GET /static/css/main.03bb971b.css 200`;

console.log(str.match(/\/.+(?=\s200)/g).filter(v => !/(js|css|png)$/.test(v)));