如何从URL中提取域

时间:2013-09-12 22:00:42

标签: string dns lua lua-patterns

我需要从Lua字符串变量中的URL(four.five)中提取域名(one.two.three.four.five)。

我似乎找不到在Lua中执行此操作的功能。

编辑:

当网址到达我的时候,http内容已被删除。所以,一些例子是:

a) safebrowsing.google.com 
b) i2.cdn.turner.com 
c) powerdns.13854.n7.nabble.com 

所以我的结果应该是:

a) google.com
b) turner.com
c) nabble.com

3 个答案:

答案 0 :(得分:4)

local url = "http://foo.bar.com/?query"
print(url:match('^%w+://([^/]+)')) -- foo.bar.com

此模式'^%w+://([^/]+)'表示:^从行的开头,取%w +一个或多个字母数字字符(这是协议),然后://,然后是[^ /] + 1个或更多字符除了斜杠和返回(捕获)这些字符作为结果。

答案 1 :(得分:3)

这应该有效:

local url = "foo.bar.google.com"
local domain = url:match("[%w%.]*%.(%w+%.%w+)")
print(domain)       

输出:google.com

模式[%w%.]*%.(%w+%.%w+)在结尾处第二个点.之后查找内容。

答案 2 :(得分:0)

使用Paul的答案提取域名,如1.2.3.4.4.5

local url =" http://foo.bar.com/?query" local domain = url:match(' ^%w +://([^ /] +)'))

以及" split"的下一次使用为部件构建数组的方法

http://lua-users.org/wiki/SplitJoin

local arr = split(domain,'%。') - 为了点,因为它是"模式的一部分"

接下来你可以使用最新的两个:arr [#arr],arr [#arr-1]