从这一行
frame= 2 fps= 0 q=3.0 size= -0kB time=00:00:13.33 bitrate= -0.0kbits/s dup=0 drop=92
我只想匹配框架中的'2'。我该如何做到这一点?
答案 0 :(得分:4)
以下是要使用的Lua pattern字符串:
"frame%=[%s]+(%d+)"
如果你在string.match
这样的函数中使用它,那么这会将帧编号捕获为字符串:
local framenumber = string.match(testString, "frame%=%s+(%d+)");
framenumber
将拥有捕获的数字(再次,作为字符串。将其转换为tonumber
的数字)或NIL(如果未找到)。
答案 1 :(得分:2)
如果帧始终位于开头且总是有相同数量的空格,则实际上并不需要模式。一个简单的string.sub将执行:
local str = "frame= 2 fps= not really important"
local frame = tonumber(str:sub(7,12))
答案 2 :(得分:1)
这样的事情应该有效。
local data = 'frame= 2 fps= 0 q=3.0 size= -0kB time=00:00:13.33 bitrate= -0.0kbits/s dup=0 drop=92'
local _,_, frame = data:find("^frame%=%s+(%d+)")
if frame then
print("Frame: "..frame)
end
答案 3 :(得分:1)
鉴于您的评论,简单模式s:match("%d+")
将起作用,但从长远来看,s:match("frame=%s*(%d+)")
可能更强大。