Как получить записи, не заканчивающиеся на определённые фразы, с помощью регулярных выражений
Есть следующие записи в логах:
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,
Ответы (5 шт):
Автор решения: Qwertiy
→ Ссылка
Если используемый язык позволяет предпросмотр назад переменной длины, то так:
`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))
Автор решения: Qwertiy
→ Ссылка
`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))
Автор решения: Armen
→ Ссылка
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, ''));
Автор решения: Дмитрий
→ Ссылка
Кажется основной вопрос тут - с помощью чего получить-то надо? Например просто 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
Автор решения: ksa
→ Ссылка
Как получить с помощью регулярных выражений 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)));