grep正则表达式如何进行最短匹配?

需求是匹配网页里面的ed2k链接我写的grep正则如下

grep  -o 'ed2k.*|\/' 

待匹配的网页代码中有时会含有两个链接,两个a标签竟然不换行。。。

<a href="ed2k://|file|%E7%A1%85%E8%B0%B7.Silicon.Valley.S01E01.%E4%B8%AD%E8%8B%B1%E5%AD%97%E5%B9%95.HDTVrip.1024X576.mkv|348759100|04dc44e4978ea2d4dc9bf41b08829a3e|h=rfe5smulijxlmz7mgtpmn2bt3vmofk56|/">第1集.HR-HDTV.1024.mkv</a> ——<a href="ed2k://|file|silicon.valley.s01e01.720p.hdtv.x264-killers.mkv|843706966|3B4B08BD9C960B5B8F2372158F84B1AE|h=36632AROF43T63NSXFLIGSYEB4PNDEFN|/">720P</a>

所以我匹配成了这个样子。。。

ed2k://|file|%E7%A1%85%E8%B0%B7.Silicon.Valley.S01E01.%E4%B8%AD%E8%8B%B1%E5%AD%97%E5%B9%95.HDTVrip.1024X576.mkv|348759100|04dc44e4978ea2d4dc9bf41b08829a3e|h=rfe5smulijxlmz7mgtpmn2bt3vmofk56|/">第1集.HR-HDTV.1024.mkv</a> ——<a href="ed2k://|file|silicon.valley.s01e01.720p.hdtv.x264-killers.mkv|843706966|3B4B08BD9C960B5B8F2372158F84B1AE|h=36632AROF43T63NSXFLIGSYEB4PNDEFN|/

请问:grep正则表达式如何进行最短匹配?

阅读 9.7k
3 个回答

这个可以匹配出来 grep -o "ed2k[^\"]*"

[root@localhost oldlog.md]# echo '你的地址' | grep -o "ed2k[^\"]*"
ed2k://|file|%E7%A1%85%E8%B0%B7.Silicon.Valley.S01E01.%E4%B8%AD%E8%8B%B1%E5%AD%97%E5%B9%95.HDTVrip.1024X576.mkv|348759100|04dc44e4978ea2d4dc9bf41b08829a3e|h=rfe5smulijxlmz7mgtpmn2bt3vmofk56|/
ed2k://|file|silicon.valley.s01e01.720p.hdtv.x264-killers.mkv|843706966|3B4B08BD9C960B5B8F2372158F84B1AE|h=36632AROF43T63NSXFLIGSYEB4PNDEFN|/

建议通过一些html的parser把a标签单独提取出来进行匹配,可以避免一行出现多个a的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题