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

Spliting string of arithmetic operations in lua

下面是lua中的算术运算串。

local str ='x+abc*def+y^z+10'

能否拆分此字符串以显示单个变量或数字?例如,假设字符串 str 被拆分为 table s。那么输出将是

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

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

您可以使用 string.gmatch 遍历您的字符串。 随意向模式中添加其他运算符。

参考https://www.lua.org/manual/5.3/manual.html#6.4.1

local str ='x+abc*def+y^z+10'
local s = {}

for operand in str:gmatch('[^%+%*%^]+') do
  table.insert(s, operand)
end

您可以使用 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 模式的资源:understanding_lua_patterns

也试试这个更简单的模式:

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