Регулярное выражение: сопоставить все, кроме строк, заканчивающихся в контрольной группе - PullRequest
0 голосов
/ 27 марта 2019

Я очищаю некоторые веб-сайты и хотел бы отменить обращения к обычным файлам img на основе регулярных выражений. Функция регулярного выражения должна быть

Соответствует всему, кроме URL (строки), заканчивающихся на .jpg, .png, .gif

Примеры:

  • www.example.com / test.jpg
  • www.example.com / test2.png

Я пытался сделать это

.*(?:(?!\.(jpg|png|gif)))$

Но безуспешно

1 Ответ

0 голосов
/ 27 марта 2019

Правильный негативный взгляд в будущее, который вы пытаетесь построить, таков:

(?!.*\.(?:jpg|png|gif)$)

Который будет отклонять строку, если она заканчивается либо jpg, либо png, либо gif, а общее регулярное выражение, которое необходимо использовать для отклонения строк:

^(?!.*\.(?:jpg|png|gif)$).+$

Демо

Кроме того, проблема с вашим регулярным выражением .*(?:(?!\.(jpg|png|gif)))$ заключается в том, что .* уже будет жадно поглощать все, не оставляя символов вперед, и, следовательно, ваш отрицательный взгляд всегда будет соответствовать значению true, так как после него не останется никаких символов. тот, на чьей основе отрицательный взгляд вперед, может отклонить вашу строку. Следовательно, вам нужно переместить .* внутрь отрицательного взгляда вперед, чтобы проверить допустимость нуля или более любых других символов перед .jpg или .png или .gif

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...