从LUA中的URL派生主机

时间:2018-06-29 16:03:46

标签: lua

我有以下网址。

http://localhost:4000/path?query=foo
http://localhost:4000/
http://localhost
http://localhost/

我只想返回host部分。老实说,我不在乎这样的网址

 http://localhost:abcd/
 http://localhost:abcd/path?query=foo

因为可以保证正确的URL。

我以某种方式设法在rubular上为其得出了一些模式

但是,这涉及超前技术。我如何应用超前技术。 看起来像这样

^https?:\/\/(.+)(?=[\/|$])

但是有两个问题

  • 先行技巧不适用于lua匹配
  • 至少对于以下http://localhost,正则表达式不是完整的证明(请注意在末尾缺少斜杠)

这是我的问题。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

模式匹配的关键是避免特殊情况,例如可选的定界符。将/附加到字符串可以简化任务。

尝试以下代码:

function host(s)
    return (s.."/"):match("://(.-)/")
end

function test(s)
    print(s,host(s))
end

test"http://localhost:4000/path?query=foo"
test"http://localhost:4000/"
test"http://localhost"
test"http://localhost/"