String 用于解析带有可选部分的字符串的Lua模式

String 用于解析带有可选部分的字符串的Lua模式,string,lua,lua-patterns,String,Lua,Lua Patterns,我必须解析一个字符串,格式为value,value,value,value,value。最后两个值是可选的。这是我的代码,但它仅适用于必需的参数: Regex = "([^,])+, ([^,])+, ([^,])+" 我正在使用string.match将值转换为变量。在中,您不能将捕获组设置为可选,也不能使用逻辑OR运算符。因此答案是:这是不可能的。因为您要用逗号拆分字符串,所以请使用gmatch: local tParts = {} for sMatch in str:gmatch "(

我必须解析一个字符串,格式为
value,value,value,value,value
。最后两个值是可选的。这是我的代码,但它仅适用于必需的参数:

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

我正在使用
string.match
将值转换为变量。

在中,您不能将捕获组设置为可选,也不能使用逻辑OR运算符。因此答案是:这是不可能的。

因为您要用逗号拆分字符串,所以请使用
gmatch

local tParts = {}
for sMatch in str:gmatch "([^,]+)" do
    table.insert( tParts, sMatch )
end
现在,一旦零件存储在表中;您可以通过以下方式检查该表是否包含索引
4
5
处的匹配组:

if tParts[4] and tParts[5] then
    -- do your job
elseif tParts[3] then
    -- only first three matches were there
end

Lua模式不是正则表达式。你到底想配什么?用具体的例子来解释,什么是输入,什么是预期的输出。我不知道lua,但它不存在
split