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

问题描述:

我必须解析value, value, value, value, value形式的字符串。最后两个值是可选的。这是我的代码,但它只能提供必需的参数:用于解析可选部分字符串的Lua模式

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

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

+2

Lua的图案不是正则表达式。你想要匹配什么?使用具体的例子来解释什么是输入和什么是预期输出。 – 2014-08-30 11:02:45

+0

我不知道lua但不存在'split'? – Toto 2014-08-30 12:05:42

既然你用逗号分割的字符串,请使用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 
+0

解决与相同的解决方案,谢谢 – karim 2014-08-30 12:52:43

Lua中,您无法使捕获组成为可选组件,也无法使用逻辑OR运算符。所以答案是:这是不可能的。