Lua模式用于解析包含可选部分的字符串。

我需要解析一个形如 value, value, value, value, value 的字符串。其中最后两个值是可选的。这是我的代码,但它只适用于必需的参数:

Regex = "([^,])+, ([^,])+, ([^,])+"

我使用 string.match 将值获取到变量中。

点赞
用户3297613
用户3297613

Lua中,你不能使捕获组可选,也不能使用逻辑或运算符。因此,答案是:不可能的。

2014-08-30 10:48:49
用户1190388
用户1190388

由于你正在使用逗号拆分字符串,请使用gmatch:

local tParts = {}
for sMatch in str:gmatch "([^,]+)" do
    table.insert(tParts, sMatch)
end

现在,一旦部件存储在表格中,您可以检查表格是否包含索引45的匹配组:

if tParts[4] and tParts[5] then
     - 做你的工作
elseif tParts[3] then
     - 只有前三个匹配
end
2014-08-30 12:33:04