Regex для многострочного поиска в VSCode - PullRequest
0 голосов
/ 10 января 2019

У меня есть регулярное выражение в VScode для поиска строк img без отметок alt = "" и title = "" для целей SEO, и я не могу найти решения для неправильно отформатированных многострочных символов.

Например, мое регулярное выражение:

<img((?!alt\=\".*\").)*((?!title\=\".*\").)*>

работает для:

example1

но не будет работать для:

example2.

Я пробовал что-то вроде:

<img\n*\t*\s*\r*((?!alt\=\".*\").)*((?!title\=\".*\").)*\n*\t*\s*\r*>

но это тоже не сработает.

Я ищу решение для этого, потому что у меня есть 15 тыс. Строк HTML-кода с этим вторым типом форматирования (возможно, копирование вставки из поста WordPress).

Это пример строки, если вы хотите скопировать ее:

<img class="img-responsive vertical-center" src="someImage.png" style="height: 65%; width: auto;" alt="" >

1 Ответ

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

То, что вы просите, действительно сложно, самое близкое, что я получил, это обменяться. для [^>], если вы не укажете в параметрах регулярного выражения. не будет соответствовать символам новой строки.

<img((?!alt\=\".*\")[^>])*((?!title\=\".*\")[^>])*>

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

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

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