我不能使变量"v"接收任何字符,而变量"k"只接收字母数字



有人能帮我一下吗?

我不能让变量"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

(可能过于简化了,如果是的话,对不起…)
如果您试图在文件中的'='处断行,并将它们赋值为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("nn")
--
-- 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

你实际上只得到一个匹配,因为*是贪婪的。如果您正在尝试分割行,请尝试(%w+)=([^'n]*)n

注意:Lua使用模式,而不是正则表达式。有时候差异并不重要,有时候却至关重要。

最新更新