我不能让变量 "v" 接收任何字符,而变量 "k" 只接收字母数字
I can not make the variable "v" receive any characters while the variable "k" receives only alphanumeric
有人可以帮我解决这个问题吗?
我无法让变量 "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
你实际上只得到一个匹配,因为 *
是贪婪的。如果您尝试拆分行,请尝试 (%w+)=([^'\n]*)\n
注意:Lua 使用模式,而不是正则表达式。有时差异并不重要,有时却至关重要。
(可能过于简单化了,如果是这样,抱歉...)
如果您试图在文件中的“=”处换行,则将它们分配为 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' 的参考手册条目):
For this function, a caret '^' at the start of a pattern does not work as an anchor, as this would prevent the iteration.
http://www.lua.org/manual/5.3/manual.html#pdf-string.gmatch
有人可以帮我解决这个问题吗?
我无法让变量 "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
你实际上只得到一个匹配,因为 *
是贪婪的。如果您尝试拆分行,请尝试 (%w+)=([^'\n]*)\n
注意:Lua 使用模式,而不是正则表达式。有时差异并不重要,有时却至关重要。
(可能过于简单化了,如果是这样,抱歉...)
如果您试图在文件中的“=”处换行,则将它们分配为 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' 的参考手册条目):
For this function, a caret '^' at the start of a pattern does not work as an anchor, as this would prevent the iteration. http://www.lua.org/manual/5.3/manual.html#pdf-string.gmatch