Извлечь хост из URL в LUA - PullRequest
0 голосов
/ 29 июня 2018

У меня следующий URL.

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

Все, что я хочу, это вернуть host часть. Честно говоря, мне плевать на такой URL

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

потому что это гарантированно корректный URL.

Мне как-то удается вывести для него какой-то шаблон на rubular

Но это касается техники прогнозирования, как применить метод прогнозирования. Который выглядит так

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

но есть 2 проблемы

  • Техника Lookahead не работает с lua match
  • Регулярное выражение не является полным доказательством, по крайней мере, для следующих http://localhost (обратите внимание на косую черту в конце)

Так что это мой вопрос.

Как мне это решить?

1 Ответ

0 голосов
/ 29 июня 2018

Ключом к сопоставлению с образцом является избегание особых случаев, таких как необязательные разделители. Добавление / к строке упрощает задачу.

Попробуйте этот код:

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/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...