Отрицательный прогноз соответствует неверному выражению в возвышенном тексте 3 - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь найти тег <img> без атрибута alt в файле HTML, используя Sublime Text 3 .Мое выражение: (<img)((\s)+(?!alt)[a-z]+=\"[^>]*\")*(\s*)(>).

Но Sublime Text в любом случае находит тег с атрибутом alt.Почему это не работает, как ожидалось?Какой правильный путь?

<img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg" alt=""> - он найден.Но я хочу найти что-то без alt.Например: <img class="d-block retina" src="images/header/mobile/slider-bg-2_1x.jpg">

1 Ответ

0 голосов
/ 31 января 2019

Для отклонения любого тега <img, содержащего именованный ключ alt, вы можете упростить свое регулярное выражение до этого,

<img\s*(?:(?!\balt=).)*\s*>

Объяснение:

  • <img - соответствует началу тега <img
  • \s* - разрешено дополнительное пространство
  • (?:(?!\balt=).)* - эта часть отклоняет строку, как только она видит точную буквенную строкукак это alt=, но позволяет, если он видит alt как подстроку в имени большего ключа, например aaaalt= или altxyz= или aaaaltbbb=, и захватывает любой другой символ ноль или более раз
  • \s* - Опять допускается дополнительное пространство перед концом тега
  • > - Соответствует концу тега

Демо

Дайте мне знать, если это работает для вас.

...