我不能让变量“v”接收任何字符,而变量“k”只接收字母数字

时间:2016-09-06 22:04:41

标签: lua lua-patterns

有人可以帮我这个吗?

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

2 个答案:

答案 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