如何从URL中提取域名

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

我似乎找不到 Lua 中的函数来完成这个任务。

编辑:

当 URL 到达我这里时,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
点赞
用户1442917
用户1442917
local url = "http://foo.bar.com/?query"
print(url:match('^%w+://([^/]+)')) -- foo.bar.com

这个模式 '^%w+://([^/]+)' 的意思是: 从行的开头开始,取 %w+ 一个或多个字母数字字符(这是协议),然后是://,然后是 [^/]+ 一个或多个不是斜杠的字符并返回(捕捉)这些字符作为结果。

2013-09-13 00:15:20
用户1009479
用户1009479

这应该可以工作:

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

输出: google.com

模式[%w%.]*%.(%w+%.%w+)查找从末尾算起的第二个点.之后的内容。

2013-09-13 01:58:44
用户5637254
用户5637254

使用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, '%.') --escaped point because it is part of "patterns"

最后可以使用最新的两个元素:arr[#arr], arr[#arr-1]

-- Example
print(arr[#arr-1], arr[#arr]) --prints "bar" and "com"
2016-04-09 14:08:21