我想从 html 页面中提取所有 anchor 标记。我在 Linux 中使用它。
lynx --source http://www.imdb.com | egrep "<a[^>]*>"
但这并没有像预期的那样工作,因为结果包含不需要的结果
<a class="amazon-affiliate-site-name" href="http://www.fabric.com">Fabric</a><br>
我只想
<a href >...</a>
有什么好办法吗?
最佳答案
如果您的 grep 中有一个 -P
选项以便它接受 PCRE 模式,您应该能够使用更好的正则表达式。有时像 *?
这样的最小量词会有所帮助。此外,您将获得整个输入行,而不仅仅是匹配项本身;如果你有一个 -o
grep 选项,它将只列出匹配的部分。
egrep -Po '<a[^<>]*>'
如果你的 grep 没有这些选项,试试
perl -00 -nle 'print $1 while /(<a[^<>]*>)/gi'
现在跨越线边界。
要对 HTML 进行真正的解析,需要的正则表达式比您希望在命令行上输入的要复杂得多。 Here’s one example , 和 here’s another .这些可能无法说服您尝试非正则表达式方法,但它们至少应该向您展示在一般情况下比在特定情况下更难。
这个答案说明了为什么 all things are possible, but not all are expedient.
关于regex - 从html页面中提取数据的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977850/