Lua模式用于GUID。

我正在尝试在 Lua 中实现一个模式,但不成功

我需要的模式类似于正则表达式:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12},用于验证 guid

我无法找到在 Lua 中实现正则表达式的正确方法,也无法在文档中找到。

请帮我实现上述 guid 的正则表达式。

点赞
用户1009479
用户1009479

你可以使用如下代码:

local pattern = "%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x"
local guid = "3F2504E0-4F89-41D3-9A0C-0305E82C3301"
print(guid:match(pattern))

注意事项:

  1. 在 Lua 模式中不支持修饰符 {8}
  2. - 需要使用 %- 进行转义。
  3. 字符类 %x 等价于 [0-9a-fA-F]

一种清晰的构建模式的方法是使用由 @hjpotter92 提供的辅助表:

local x = "%x"
local t = { x:rep(8), x:rep(4), x:rep(4), x:rep(4), x:rep(12) }
local pattern = table.concat(t, '%-')
2014-04-11 13:45:28