Lua中提取字符串的最后一部分

我需要像这样提取字符串的最后一部分,

http://development.dest/show/images-345/name/289/

我只需要这一部分 289,我尝试使用下一个模式的 string.match

string.match(url, "(%d+)(\/)$")

并在错误日志中获得以下错误,

2017/05/22 20:53:04 [error] 31264#0: *5 failed to load external Lua file

我认为模式的最后一部分是错误的,但我不知道如何修复它((\/)).

点赞
用户107090
用户107090

Lua 中的错误信息是:

invalid escape sequence near '"(%d+)(\/'

该错误信息指出 \/ 不是 Lua 字符串中的有效转义序列。

以下简单的模式能够正常工作:

print(string.match(url, "(%d+)/$"))

如果最后的斜杠是可选的,可以使用以下模式:

print(string.match(url, "(%d+)/?$"))
2017-05-22 21:11:40
用户1944004
用户1944004

使用 LuaSocket 来处理 URL。这样,您也可以轻松解析协议、查询等,而不必经过正则表达式地狱。

local url = assert(require"socket.url")

local parsed_url = url.parse"http://development.dest/show/images-345/name/289/"
local path       = url.parse_path(parsed_url.path)

print(path[#path])
2017-05-23 00:32:10