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

提取Lua中字符串的最后一部分,lua,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 我认为模式的最后一部分是错误的,但我不知道如

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

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

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

来自Lua的错误消息是

invalid escape sequence near '"(%d+)(\/'
这表示
\/
在Lua字符串中不是有效的转义序列

下面简单的模式可以很好地工作:

print(string.match(url, "(%d+)/$"))
如果最终斜杠是可选的,请使用

print(string.match(url, "(%d+)/?$"))
用于处理URL。通过这种方式,您还可以轻松地解析出协议、查询等,而不必经过regexhell

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])

您需要的不是括号,而是创建字符类的括号,括号用于捕获。此外,我还添加了一个问号,它与0或1个斜杠匹配,因为它可能在那里,也可能不在那里<代码>“(%d+)[\/]?$”是您想要的。是否可以记录或打印捕获结果?如果最后的斜杠是可选的,那么模式会是怎样的呢?Lua模式(不是正则表达式)使用起来很愉快!