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

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

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

点赞
用户3832970
用户3832970

你可以使用一个 var%s+version="([^"]+) 模式,结合 string.match,它只会输出所捕获的文本(即与 ([^"]+) 匹配的文本)(请参见此Lua模式教程):

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

请查看Lua演示

详细信息

  • var - 字面量 var 文本
  • %s+ - 1个或多个空格
  • version=" - 字面量 version=" 文本
  • ([^"]+) - 一个捕获组,匹配除 " 之外的1个或多个字符。

如果你想指定 version="..." 内部只能有数字和逗号,请使用 var%s+version="([%d,]+) 模式(请参见demo),其中 [%d,]+ 匹配 1个或多个数字或逗号。

2017-02-13 14:23:28
用户6778428
用户6778428
--> 仅解析第一个单引号字符串。
str1 = [[var version='1,1,0,0';]]
res1 = string.match(str1, "%b''")
res1 = string.gsub(res1, "'", '')
print(res1)

--> 仅解析第一个双引号字符串。
str2 = [[var version="1,1,0,0";]]
res2 = string.match(str2, '%b""')
res2 = string.gsub(res2, '"', "")
print(res2)

--> 解析所有单引号字符串。
line1 = "major_ver='1', minor_ver='1.1'"
for chunk in string.gmatch(line1, "'(.-)'") do print(chunk) end

--> 解析所有双引号字符串。
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演示 按钮以查看实时结果。

2018-11-05 12:33:30