Регулярное выражение полного соответствия для URI - PullRequest
0 голосов
/ 27 марта 2020

что такое регулярное выражение с полным совпадением (python), чтобы найти URI только из nginx журналов?

00.00.00.00 - - [23/Mar/2020:16:23:04 +0000] "GET /foo/bar/uri.js?id=123 HTTP/1.1" 200 19165 "https://nginx.com/foo/bar" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" "00.00.00.00" 0.000

00.00.00.00 - - [23/Mar/2020:16:23:04 +0000] "GET /foo/bar/uri HTTP/1.1" 200 19165 "https://nginx.com/foo/bar" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" "00.00.00.00" 0.000

00.00.00.00 - - [23/Mar/2020:16:23:04 +0000] "GET /foo/bar/uri.png HTTP/1.1" 200 19165 "https://nginx.com/foo/bar" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" "00.00.00.00" 0.000

регулярное выражение с полным совпадением должно давать ниже

/foo/bar/uri.js?id=123
/foo/bar/uri
/foo/bar/uri.png

пример для полного регулярное выражение матча: https://regex101.com/r/kEOx1U/3

1 Ответ

0 голосов
/ 28 марта 2020

Регулярное выражение для сопоставления этим URI выглядит следующим образом ( нажмите здесь ):

(?<=GET )([^ ]*)

Понятно, что если вы хотите не только сопоставлять, но и извлекать, что означает удаление всех в остальном вы тоже соответствуете ( нажмите здесь ):

.*(?<=GET )([^ ]*).*

и используйте $1 в подстановке (в Perl; если вам нужно Python, тогда используйте \1).

...