Извлечь конкретный текст из документа - PullRequest
0 голосов
/ 22 января 2019

У меня есть текстовый файл, из которого мне нужно извлечь определенные элементы данных.

Пример текста:

<url>
    <loc>https://example.com/example0.html</loc>
    <lastmod>2019-01-22</lastmod>
    <priority>0.5</priority>
</url>
<url>
    <loc>https://example.com/example1.html</loc>
    <lastmod>2019-01-21</lastmod>
    <priority>0.5</priority>
</url>
<url>
    <loc>https://example.com/example2.html</loc>
    <lastmod>2019-01-21</lastmod>
    <priority>0.5</priority>
</url>
<url>
    <loc>https://example.com/example3.html</loc>
    <lastmod>2019-01-20</lastmod>
    <priority>0.5</priority>
</url>
<url>
    <loc>https://example.com/example4.html</loc>
    <lastmod>2019-01-20</lastmod>
    <priority>0.5</priority>
</url>

Я хочу извлечь:

https://example.com/example0.html
https://example.com/example1.html
https://example.com/example2.html
https://example.com/example3.html
https://example.com/example4.html

Имейте ввиду, что дата не является статичной

Ответы [ 2 ]

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

Вы можете попробовать найти и заменить следующее:

Find:    <url>\s+<loc>(.*?)<\/loc>\s+<lastmod>.*?<\/lastmod>\s+<priority>.*?<\/priority>\s+<\/url>
Replace: $1

Подход этого ответа состоит в том, чтобы полностью сопоставить каждый тег <url>, а затем заменить его URL-адресом, захваченным в шаблоне, оставив нам только те URL-адреса, которые вы ожидаете.

Демо

Примечание. В целом нежелательно использовать регулярные выражения для анализа содержимого HTML / XML. Скорее, лучше использовать парсер. Вышеупомянутое решение дано для Notepad ++, который не имеет встроенного синтаксического анализатора XML.

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

Если вы просто пытаетесь извлечь через notepad ++, просто выполните:

https?://[^<]+
...