![使用 notepad++ 从文档中提取特定文本](https://linux22.com/image/1580329/%E4%BD%BF%E7%94%A8%20notepad%2B%2B%20%E4%BB%8E%E6%96%87%E6%A1%A3%E4%B8%AD%E6%8F%90%E5%8F%96%E7%89%B9%E5%AE%9A%E6%96%87%E6%9C%AC.png)
我有一个文本文件,需要从中提取特定的数据元素。
示例文本:
<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
请记住,日期不是静态的
答案1
- Ctrl+H
- 找什么:
<url>\s+<loc>(\S+?)</loc>.+?</url>
- 用。。。来代替:
$1
- 检查环绕
- 检查正则表达式
- 查看
. matches newline
- Replace all
解释:
<url> # literally
\s+ # 1 or more any spaces, including linebreak
<loc> # literally
(\S+?) # group 1, 1 or more non spaces, not greedy
</loc> # literally
.+? # 1 or more any characters, not greedy
</url> # literally
替代品:
$1 # content of group 1, the 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
可能有更简单的方法,我现在无法访问 Notepad++,但你可以尝试以下方法
搜索:<url>\n\s+<loc>(.*)<\/loc>\n\s.*\n\s.*\n<\/url>
代替:\1