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

5

我想在HTML正文中查找一个字符串,该字符串看起来像 var version="1,1,0,0"; 我只想提取双引号之间的内容。我尝试使用以下代码:

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

这将匹配任何以双引号开头和结尾的内容,并将其提取出来。


1
local version = response.body:match('var%s+version=(%b"");'):sub(2,-2) - tonypdmtr
2个回答

3

您可以使用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,]+)模式(请参见演示),其中[%d,]+匹配1个或多个数字或逗号。


1
--> 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演示查看实时结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接