grep 如何仅从网站中提取 link

grep Howto extract a link only from a webseite

我进行了很多搜索,但没有任何东西真正帮助我找到问题的解决方案。我仍在学习正则表达式并取得了一些成功,但在这种情况下我无法获得我想要的解决方案。

我正在编写脚本来为我们的安装服务器实现安装包。它应该下载最新的 setup.exe 并打包一个新的包,以便它可以部署到客户端。

我尝试下载一个网站并在其中找到正确的 link:

wget --no-check-certificate https://www.thunderbird.net/en-US/thunderbird/all/ -q -O- | grep -o https://download\.mozilla\.org/\?product=thunderbird-.*-SSL\&os=win64\&lang=de

它将忽略版本号,并且在我通往最终解决方案的过程中运行良好。结果是:

https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de
https://download.mozilla.org/?product=thunderbird-91.6.0-msi-SSL&os=win64&lang=de

但我需要的只是 https://download.mozilla.org/?product=thunderbird-91.6.0-SSL&os=win64&lang=de

我知道我可以对“91.6.0”进行正则表达式处理,但如果 91 变成 >100 会怎么样?如果一个版本是 95.4.0.2(例如)怎么办?

感谢您的帮助。

丹妮丝

您可以使用 [^-]* 否定括号表达式排除 thunderbird--SSL 之间的连字符:

https://download\.mozilla\.org/\?product=thunderbird-[^-]*-SSL\&os=win64\&lang=de

参见regex demo

您也可以只匹配数字或点 [0-9.]*:

https://download\.mozilla\.org/\?product=thunderbird-[0-9.]*-SSL\&os=win64\&lang=de

this regex demo