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正则表达式如何进行最短匹配?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个可以匹配出来
grep -o "ed2k[^\"]*"
建议通过一些html的parser把a标签单独提取出来进行匹配,可以避免一行出现多个a的问题
By default grep doesn't support non-greedy modifiers, but you can use grep -P to use the Perl syntax.
How to do a non-greedy match in grep?