为了账号安全,请及时绑定邮箱和手机立即绑定

非贪婪(不情愿)正则表达式匹配?

非贪婪(不情愿)正则表达式匹配?

jeck猫 2019-06-17 15:27:35
非贪婪(不情愿)正则表达式匹配?我试图使用sed来清理URL行,只提取域。因此:http://www.suepearson.co.uk/product/174/71/3816/我要:http://www.suepearson.co.uk/(无论有没有火车斜杠,这都不重要)我试过: sed 's|\(http:\/\/.*?\/\).*|\1|'和(逃避非贪婪量词)sed 's|\(http:\/\/.*\?\/\).*|\1|'但我似乎不能让非贪婪的量词工作,所以它总是匹配整个字符串。
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

无论是基本的POSIX/GNU正则表达式还是扩展的POSIX/GNU正则表达式都不会识别非贪婪的量词;您需要稍后的正则表达式。幸运的是,用于此上下文的Perl regex非常容易获得:

perl -pe 's|(http://.*?/).*|\1|'


查看完整回答
反对 回复 2019-06-17
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

在这种特殊情况下,您可以完成任务而不用使用非贪婪的正则表达式。

试试这个非贪婪的正则表达式[^/]*而不是.*?:

sed 's|\(http://[^/]*/\).*|\1|g'


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 681 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信