Function 在lua中拆分算术运算字符串

Function 在lua中拆分算术运算字符串,function,split,lua,arguments,lua-table,Function,Split,Lua,Arguments,Lua Table,以下是lua中的一系列算术运算 local str ='x+abc*def+y^z+10' 可以拆分此字符串以显示单个变量或数字吗?例如,假设字符串str被拆分为表s。然后输出将是 s[1] = x s[2] = abc s[3] = def s[4] = y s[5] = z s[6] = 10 拆分是使用运算符+,-,*,\,^,%%完成的。您可以使用string.gmatch对字符串进行迭代。 可以随意向模式添加其他操作符 指 您可以使用string.gmatch来完成所需的操作。您将

以下是lua中的一系列算术运算

local str ='x+abc*def+y^z+10'
可以拆分此字符串以显示单个变量或数字吗?例如,假设字符串
str
被拆分为表
s
。然后输出将是

s[1] = x
s[2] = abc
s[3] = def
s[4] = y
s[5] = z
s[6] = 10

拆分是使用运算符
+,-,*,\,^,%%

完成的。您可以使用string.gmatch对字符串进行迭代。 可以随意向模式添加其他操作符


您可以使用
string.gmatch
来完成所需的操作。您将使用模式
%+%-%*%^/

local str ='x+abc*def+y^z+10'
local s = {}
for value in str:gmatch("[%+%-%*%^/]*(%w*)[%+%-%*%^/]*") do
  s[#s + 1] = value
end
print(unpack(s))
另外,如果您需要
\
作为操作员,如您的问题所示,则需要使用额外的
\
进行转义


了解更多lua模式的资源:

还可以尝试以下更简单的模式:

local str ='x+(abc*def)+y^z+10'
for w in str:gmatch("%w+") do
        print(w)
end

请注意,unpack已移至表中。Lua 5.2中的unpack在使用括号时不起作用。例如
x+(abc*def)+y^z+10
@Maths89我知道。请再读一遍你的问题。我没有看到任何括号。我的回答完美地解决了所描述的问题。我看不懂你的心思。没问题。谢谢你的帮助。
local str ='x+(abc*def)+y^z+10'
for w in str:gmatch("%w+") do
        print(w)
end