有人可以帮我这个吗?
我不能让变量“v”接收任何字符,而变量“k”只接收字母数字。
t = {}
for k, v in string.gmatch(decrypt, "(%w+)=([^']*)") do
t[k] = v
print(k,v)
end
我有一个包含以下内容的文件:
email=mbw@iue.com
ip=192.168.100.1
mac=af:45:t6:45:67
答案 0 :(得分:1)
你实际上只获得一场比赛,因为*
是贪婪的。如果您尝试拆分行,请尝试(%w+)=([^'\n]*)\n
注意:Lua使用模式,而不是正则表达式。有时差异是不重要的,有时是至关重要的。
答案 1 :(得分:1)
(也许过于简单,如果是的话,抱歉...)
如果您试图在' ='中打破文件中的行。将它们分配为t:
--
-- PART I - read from a file
--
local file = "pattern.dat" -- our data file
local t = {} -- hold file values
for l in io.lines(file) do -- get one line at a time
local k, v = string.match(l, "(.+)=(.+)") -- key, value delimited by '=''
t[k] = v -- save in table
print(k,t[k])
end
print("\n\n")
--
-- PART II - read from data string
--
local data = "email=mbw@iue.com/ip=192.168.100.1/mac=af:45:t6:45:67"
data = data .. "/" -- need a trailing '/'
t = {} -- hold data values
for l in string.gmatch(data, "(.-)/") do -- get one 'line' at a time
local k,v = string.match(l, "(.+)=(.+)") -- key, value delimited by '=''
t[k] = v
print(k,t[k])
end
关于" ^"的说明锚(来自参考手册条目' gmatch'):
对于这个功能,一个插入符号' ^'在模式的开头不能作为锚点,因为这会阻止迭代。 http://www.lua.org/manual/5.3/manual.html#pdf-string.gmatch