正则表达式从URL列表中获取域(包括顶级)

时间:2014-11-20 16:23:17

标签: regex bash grep sublimetext2

我有一个网址列表,其中一些包含子目录,查询参数等。其他网址不完整,并且会突然停止,并带有空格符号或换行符(例如http://www.google)。

我想在grep中使用正则表达式仅匹配这些网址的域(包括协议和顶级域名),例如http://www.google.comhttp://www.amazon.com等。

我使用Sublime Text 2并提出以下正则表达式,似乎可以完成这项工作:

https?://[^/\n ]*

然而,以下列方式在grep中使用它会失败:

grep -E "https?://[^/\n ]*"

在结果中,匹配的URL包括子目录,查询路径等。

grep中正则表达式之间的区别是什么,例如Sublime Text导致此行为?

1 个答案:

答案 0 :(得分:0)

@Jdamian在问题的评论中指出了答案。 Grep正在选择整行(包括不需要的子目录和查询)。使用-o参数,一切都按预期工作。因此我需要的完整命令是:

grep -Eo "https?://[^/\n ]*"