RegEx для соответствия строке 'img' только в URL (например, не имена тегов) - PullRequest
0 голосов
/ 31 мая 2018

Мне нужно использовать RegEx, который я использую для поиска строк для замены с помощью задачи Grunt.

Я хочу поменять местными ссылочными URL-адресами изображения их внешние URL-адреса.Структура файла одинакова как локально, так и внешне.

Мне нужно искать /img или img в начале URL (либо в атрибуте img тега src, либо в CSSправила) и поменяйте местами внешний URL.

Например, найдите /img/some-photo.jpg или img/some-photo.jpg и замените /img или img на https://www.example.com/some-photo.jpg.

Я не могу простоищите только img, поскольку это также будет соответствовать строке в следующем HTML <img .../>, превращающей тег в <https://www.example.com .../>.

. Я могу исключить тег img следующим образом:

/\/img|(^|[^\<])img/gim

Но это также соответствует, например:

(img 'img "img

и т. Д.

Не знаюЯ не хочу исключать строку img в этих примерах, я просто не хочу захватывать предшествующие символы ((, ', " и т. д.)

Вы можете видетьэто в действии здесь: https://regexr.com/3qbeq

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Я серьезно задумался над этой проблемой.

Если все изображения были в каталоге img, поэтому за мной может идти косая черта.Теги (и в этом отношении правила CSS, такие как img {}) не сопровождаются косой чертой, и поэтому мне нужно только искать совпадения img/ или /img /.

. Это легкобыть достигнутым /(\/?img\/)/gi.

0 голосов
/ 31 мая 2018

Похоже, вам нужно смотреть на отрицательный взгляд за спиной или, если ваш код всегда заключает атрибут в одинарные или двойные кавычки, включите их.

Отрицательное решение для поиска за кадром будет выглядеть как (?<!\<)img, что должно соответствоватьлюбая строка img, которая не имеет < впереди.Быстрый поиск в интернете по запросу "негативный взгляд" даст много примеров.Lookaheads и lookbehinds - это «повышение уровня» в мастерстве регулярных выражений.

Или просто добавьте кавычки и условное обозначение для косой черты."\/?img, который будет соответствовать атрибутам, но не тегам, потому что теги не начинаются с кавычки.Опять же, это работает, только если вы заключите все свои атрибуты в кавычки.Возможно, не такой элегантный или отказоустойчивый, как внешний вид, но может выполнить эту работу.

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