Regex 使用wget和grep从页面提取超链接

Regex 使用wget和grep从页面提取超链接,regex,bash,grep,wget,pcre,Regex,Bash,Grep,Wget,Pcre,我试图使用wget和grep在一个页面中提取所有hypelinks,我发现这段代码使用PCRE来获取所有超链接 但我对regex或html不是很熟悉,所以我真的想知道这是一种合理的方法,还是有更好的方法。 我也有一个问题。你真的需要逃避引用吗?我测试了几次,但似乎没有什么不同 wget https://google.com -q -O - | grep -Po '(?<=href=\")[^\"]*' wgethttps://google.com -q-O-| grep-Po'(?您的命

我试图使用wget和grep在一个页面中提取所有hypelinks,我发现这段代码使用PCRE来获取所有超链接

但我对regex或html不是很熟悉,所以我真的想知道这是一种合理的方法,还是有更好的方法。 我也有一个问题。你真的需要逃避引用吗?我测试了几次,但似乎没有什么不同

wget https://google.com -q -O - | grep -Po '(?<=href=\")[^\"]*'

wgethttps://google.com -q-O-| grep-Po'(?您的命令将获取完全存在于一行中的所有href字符串的内容

如果整个字符串被
“单引号”
包围,则不需要单独转义双引号。
转义的目的是防止shell解释字符。转义双引号的唯一时间是允许扩展时,例如:

foo=href
grep -Po "(?<=${foo}=\")[^\"]*"
foo=href

grep-Po“(?嗯,它似乎确实有效。有什么问题吗?@Jack我只是模糊地担心这是否适用于所有用例。因为我对HTML真的不太了解,我只是希望有人能确认这是否正确。不,它不会在所有情况下都有效,也没有正确地完成。谷歌xmlstarlet和xmllint来看看其中的一些用于可靠解析XML的工具(或用它们标记此问题)
grep -Po '(?<=href=")[^"]*'