RegEx - найти и заменить, становясь слишком жадным - PullRequest
0 голосов
/ 09 марта 2020

Я новичок, поэтому любые указатели, которые вы, ребята, могли бы дать, были бы великолепны.

Я пытаюсь использовать программу RegEx для редактирования XML, заменяя определенные изображения собственным альт-текстом. Вот что я получил.

<graphic.*-A.[a-zA-Z]{3}" alt="(.*)".*>

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

Когда я сталкиваюсь с проблемой, иногда изображения не имеют альтернативного текста. В этих случаях происходит то, что программа продолжает искать, если необходимо, несколько строк, пока не найдет альтернативный текстовый тег. Это приводит к уничтожению больших частей моего XML. Как я могу заставить его оставить теги graphi c в покое, если там нет альтернативного текста? Спасибо.

1 Ответ

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

Вместо .* используйте [^>]*, чтобы регулярное выражение не совпадало после >, заканчивающего элемент. Аналогичным образом, используйте [^"]* для сопоставления внутри значения атрибута, чтобы оно не совпадало после завершающего ".

<graphic[^>]*-A.[a-zA-Z]{3}" alt="([^"]*)"[^>]*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...