String 如何从URL中提取域

String 如何从URL中提取域,string,dns,lua,lua-patterns,String,Dns,Lua,Lua Patterns,我需要从Lua字符串变量中的URL(1.2.3.4.5)中提取域(4.5) 在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 此模式“^%w+:/([^/]+)”的意思是:

我需要从Lua字符串变量中的URL(
1.2.3.4.5
)中提取域(
4.5

在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
此模式
“^%w+:/([^/]+)”
的意思是:^从行首开始,提取%w+一个或多个字母数字字符(这是协议),然后://,然后[^/]+1个或多个除斜杠以外的字符,并返回(捕获)这些字符作为结果。

这应该可以:

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


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

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

本地url=“” 本地域=url:匹配('^%w+:/([^/]+'))

接下来使用“拆分”方法为零件构建数组

本地arr=split(域,“%”)——转义点,因为它是“模式”的一部分


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

我需要从结尾开始,从右向左移动,因为我不知道url的长度。。。可能是1.2.3或1.2.3.4或1.2.3.4.5在其他语言中,我是通过从右到左计算句点并提取从右第二个句点开始的字符串来完成的。我不知道如何在lua中做到这一点。请提供一个您试图解析的URL(最好是几个)的示例。当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太棒了!!完美的谢谢使用
url:match(“[%w%-%.]*%([%w%-]+%.%w+)”)
允许在url中使用连字符。这是一篇老文章,但可能是一个有用的提示:请记住,有些域的最后两个部分没有用处,例如在英国,许多域以.co.uk结尾
local url = "foo.bar.google.com"
local domain = url:match("[%w%.]*%.(%w+%.%w+)")
print(domain)