我在 Newspapers.com 上有一个帐户。手动下载图像的语法是使用示例 ID 999:
https://www.newspapers.com/download/image/?type=jpg&id=999
但是如果你尝试手动下载图像而不使用他们的特殊软件,它会给你损坏的 URL 是:
https://www.newspapers.com/image/999/?
第二个链接不起作用。需要将其更改为第一个链接的布局。如何在 Notepad++ 中更改第二行以包含第一行的信息?
有时需要更改的 URL 在末尾有额外的信息。例如:
https://www.newspapers.com/image/999/?terms=randomletters 或者 https://www.newspapers.com/image/999/?terms=randomnumbers
我如何让代码删除 /999 部分之后的所有内容?
答案1
- 启动 notepad++
- 粘贴您要修复的链接
Ctrl
通过+打开替换对话框H
- 设置
Find what
^(.*?)(\d+)(\D*)$
- 设置
replace with
https://www.newspapers.com/download/image/?type=jpg&id=\2
- 启用搜索模式
regular expression
- 点击
replace all
完成。工作原理:我们拥有的唯一标识符是数字组。因此,我们使用正则表达式获取整个字符串,并捕获第二个捕获组中的数字。然后,我们可以用我们知道有效的固定字符串替换整个字符串,并将数字粘贴到需要的位置。
如果您想尝试一下,我强烈推荐 regex101.com。
答案2
- Ctrl+H
- 找什么:
https://www.newspapers.com/\K(image)/(\d+)(/\?)\S*
- 用。。。来代替:
download/$1$3type=jpg&id=$2
- 检查环绕
- 检查正则表达式
- 请勿检查
. matches newline
- Replace all
解释:
https://www.newspapers.com/ : literally
\K : forget all we have seen until this position
(image) : group 1, literally "image"
/ : a slash
(\d+) : group 2, 1 or more digits (ie. the id)
(/\?) : group 3, a slash and a question mark
\S* : 0 or more non space character
替代品:
download/ : literally "download/"
$1 : content of group 1, (ie. image)
$3 : content of group 3, "/?"
type=jpg&id= : literally
$2 : content of group 2, (ie. the id)
输入:
https://www.newspapers.com/image/999/?
https://www.newspapers.com/image/999/?terms=randomletters
https://www.newspapers.com/image/999/?terms=123456
结果:
https://www.newspapers.com/download/image/?type=jpg&id=999
https://www.newspapers.com/download/image/?type=jpg&id=999
https://www.newspapers.com/download/image/?type=jpg&id=999