提取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模式(不是正则表达式)使用起来很愉快!