LUA:用双引号查找并返回字符串

时间:2017-02-13 14:17:47

标签: string lua find

我尝试在HTML-Body中找到一个字符串,字符串看起来像var version="1,1,0,0";,我只想在双引号之间提取内容。我用

试了一下

local version = string.match(response.body, ".version.") return version

2 个答案:

答案 0 :(得分:2)

您可以使用var%s+version="([^"]+)模式与string.match仅输出捕获的文本(即与([^"]+)匹配的文本)(请参阅此Lua patterns tutorial):

s = [[var version="1,1,0,0";]]
res = string.match(s, [[var%s+version="([^"]+)]])
print(res)

请参阅Lua demo

<强>详情:

  • var - 文字var文字
  • %s+ - 1+空格
  • version=" - 文字version="文字
  • ([^"]+) - 与"以外的1个字符匹配的捕获组。

如果您要指定version="..."中只能包含数字和逗号,请使用var%s+version="([%d,]+)模式(请参阅demo),其中[%d,]+匹配1位数或逗号

答案 1 :(得分:0)

--> parsing first single quoted string only.
str1 = [[var version='1,1,0,0';]]
res1 = string.match(str1, "%b''")
res1 = string.gsub(res1, "'", '')
print(res1)

--> parsing first double quoted string only.
str2 = [[var version="1,1,0,0";]]
res2 = string.match(str2, '%b""')
res2 = string.gsub(res2, '"', "")
print(res2)


--> parsing all single quoted strings.
line1 = "major_ver='1', minor_ver='1.1'"
for chunk in string.gmatch(line1, "'(.-)'") do print(chunk) end

--> parsing all double quoted strings.
line2 = 'major_ver="2", minor_ver="2.2"'
for chunk in string.gmatch(line2, '"(.-)"') do print(chunk) end

line3 = [[major_ver="3", minor_ver="3.3"]]
for chunk in string.gmatch(line3, [["(.-)"]]) do print(chunk) end

点击Lua demo以获得实时结果。