我正在尝试使用wget和grep提取单个页面中的所有超链接,并且我使用PCRE找到了此代码以获取所有超链接。
但是我对regex或html并不是很熟悉,所以我真的想知道这是否是解决问题的合理方法,或者是否有更好的方法。 我对此也有疑问。您真的需要转义报价吗?我测试了几次,但似乎没有什么不同。
wget https://google.com -q -O - | grep -Po '(?<=href=\")[^\"]*'
任何帮助将不胜感激!
答案 0 :(得分:1)
您的命令将抓取完全在一行上的所有href字符串href="..."
的内容。
如果整个字符串都被\"
包围,则无需单独转义双引号'single quotes'
。引用的目的是防止字符被外壳解释。唯一需要转义双引号的时间是在您允许扩展时,例如:
foo=href
grep -Po "(?<=${foo}=\")[^\"]*"
这与
完全相同grep -Po '(?<=href=")[^"]*'
哪个意思
P
CRE o
一场比赛(?<=...)
为后缀的文字字符串href="
[^"]
*
如果您解析*
,则使用<a href="">
可能会返回一个空字符串。您可以使用+
(一次或多次)而不是*
(零次或多次)。