我想在HTML正文中查找一个字符串,该字符串看起来像 var version="1,1,0,0";
我只想提取双引号之间的内容。我尝试使用以下代码:
local version = string.match(response.body, '".-"')
return version
这将匹配任何以双引号开头和结尾的内容,并将其提取出来。
您可以使用var%s+version="([^"]+)
模式与string.match
一起使用,只会输出捕获的文本(即与([^"]+)
匹配的文本)(请参见此Lua模式教程):
s = [[var version="1,1,0,0";]]
res = string.match(s, [[var%s+version="([^"]+)]])
print(res)
var
- 文字var
%s+
- 1个或多个空格version="
- 文字version="
([^"]+)
- 捕获组,匹配除"
以外的1个或多个字符。如果您想指定version="..."
内只能有数字和逗号,请使用var%s+version="([%d,]+)
模式(请参见演示),其中[%d,]+
匹配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演示查看实时结果。
local version = response.body:match('var%s+version=(%b"");'):sub(2,-2)
- tonypdmtr