Извлечь строку между двумя ключевыми словами для всех файлов в каталоге - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть несколько файлов .xml в следующей папке: "C: \ Users \ Kavinda JD \ Desktop \ Manual \ XMLs \ Output"

Я хочу найти всю эту папку для всех.ссылки на PNG-файлы.Например, один XML-файл имеет следующее:

        <li class="list1-item clearer">
            <div class="ie8fixer" />
            <p class="step2-list1-nonmark-heading">The following image is an example.</p>
            <div class="bigImage"><img src="../image/vl7ie02.png" alt="VL7IE02" class="figure-graphic--bigImage" />
            </div>
        </li>

Мне нужно что-то, что пройдет через каждый XML-файл и выберет имя .png-файла.Таким образом, для приведенного выше примера результат будет:

vl7ie02.png

Я уже пытался использовать Notepad ++ для поиска строки ".png", но для некоторых файлов .xml одна строка содержит многоинформация и имя файла png появляются в конце тега.Таким образом, Notepad ++ не отображает это в окне вывода - даже если есть совпадение.Затем я должен перейти к файлу и соответствующей строке и взять его оттуда.

Я не хочу этого делать, поскольку в каталоге более 6000 xml-файлов!

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Используйте следующее регулярное выражение:

img.*?src=".*(?<="|\/)(\w+\.(?:png|jpg|jpeg|gif))"

Более подробное объяснение на [Regex101] [2].

  • Обратите внимание, что путь к изображению всегда находится в теге img и атрибуте src.
  • Также обратите внимание, что содержимое атрибута src всегда заключено в кавычки ".
  • (?<="|\/) - это позитивный запрос, который указывает, что имя и расширение изображения должны быть после кавычки " или переднего слеша / (необходимо экранировать).
  • \w+\. соответствует имени файла с точкой. Если вы хотите экс. пробелы в имени файла, используйте .+.
  • (?:png|jpg|jpeg|gif) - возможные расширения. Если вам все равно, используйте \w+.
  • Оберните имя файла точкой и расширением в скобках группы захвата (\w+\.(?:png|jpg|jpeg|gif)).
0 голосов
/ 15 сентября 2018

Используйте grep -Eo "[^/]+\.png" *.xml

, если вы используете Windows, см. Grep для Windows

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