【问题标题】:how to extract the domain from a URL如何从 URL 中提取域
【发布时间】:2013-09-17 11:22:54
【问题描述】:

我需要从 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

【问题讨论】:

  • 这是一个旧帖子,但也许这是一个有用的提示:请记住,有些域,最后两个部分没有用,例如在英国,很多域结束在 .co.uk

标签: string dns lua lua-patterns


【解决方案1】:

这应该可行:

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

输出:google.com

模式[%w%.]*%.(%w+%.%w+) 查找倒数第二个点. 之后的内容。

【讨论】:

  • 太棒了!完美的!!谢谢!!
  • 使用 url:match("[%w%-%.]*%.([%w%-]+%.%w+)")) 允许在 URL 中使用连字符。
【解决方案2】:
local url = "http://foo.bar.com/?query"
print(url:match('^%w+://([^/]+)')) -- foo.bar.com

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

【讨论】:

  • 我需要从末端开始,从右到左移动,因为我不知道 url 会有多长......可能是 one.two.three 或 one.two.three.four或 one.two.three.four.five 在其他语言中,我通过从右到左计算句点并从右数第二个句点开始提取字符串来完成此操作。我不知道如何在 lua 中做到这一点。
  • 提供您尝试解析的 URL 示例(最好是几个)。
  • 当 url 得到我的时候,http 的东西已经被剥离了。所以,一些例子是:a)safebrowsing.google.com b)i2.cdn.turner.com c)powerdns.13854.n7.nabble.com ...所以我的结果应该是:a)google.com,b)特纳.com,c)nabble.com
【解决方案3】:

使用 Paul 的答案提取像 1.2.3.4.4.5 这样的域

本地网址 = "http://foo.bar.com/?query" 本地域 = url:match('^%w+://([^/]+)'))

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

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

喜欢

local arr = split(domain, '%.') --转义点,因为它是“模式”的一部分

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

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2021-04-12
    • 2019-09-24
    • 2022-01-16
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多