Lua模式匹配数字格式,不捕获早期数字
我想从Lua模式匹配数字格式,不捕获早期数字,lua,Lua,我想从xrandr-q捕获分辨率和刷新率输出。具体而言,这些数字的格式为xx.xx或xxx.xx,其中小数点后始终有2个数字,但有时小数点前也有2或3个数字。我想单独捕获每个值,以便能够存储它们以供以后使用 4行典型的命令输出如下所示: 3440x1440 59.97 + 99.98* 49.99 2560x1440 59.95 2560x1080 60.00 59.94 1920x1080 60.00 59.
xrandr-q
捕获分辨率和刷新率输出。具体而言,这些数字的格式为xx.xx
或xxx.xx
,其中小数点后始终有2个数字,但有时小数点前也有2或3个数字。我想单独捕获每个值,以便能够存储它们以供以后使用
4行典型的命令输出如下所示:
3440x1440 59.97 + 99.98* 49.99
2560x1440 59.95
2560x1080 60.00 59.94
1920x1080 60.00 59.94 50.00
3440x1440
3440x1440 59.97
99.98
49.99
2560x1440
2560x1440 59.95
我已经能够使用string.match(xrandr[I],“^.-%s(%d.-x.-%s)”)获得分辨率。
其中xrandr是包含每行命令输出的数组。我当前尝试单独获取刷新率的结果如下:string.gmatch(xrandr[i],%s.-(%d.-%..-%d%d)”
。这几乎是可行的,但对于每个分辨率,它都会同时捕获分辨率和第一次刷新率,然后分别捕获以下内容。当我尝试打印有意捕获的分辨率,然后再打印其支持的每个刷新率时,结果如下所示:
3440x1440 59.97 + 99.98* 49.99
2560x1440 59.95
2560x1080 60.00 59.94
1920x1080 60.00 59.94 50.00
3440x1440
3440x1440 59.97
99.98
49.99
2560x1440
2560x1440 59.95
捕获分辨率,然后以第一次刷新率再次捕获分辨率。相反,我想得到这个:
3440x1440
59.97
99.98
49.99
2560x1440
59.95
那么,我如何避免重新捕获分辨率,同时也以虚拟方式获取每个刷新率呢?您的模式非常复杂 分辨率:`%d+x%d+“
%d
任意数字
%d+
一个或多个数字
x
字符x
刷新率:%d+%。%d+”
%。
一个点(转义的魔法字符
和%
,否则
表示任何字符)
一次性:
local a = "1234x5678 12.34 56.78"
for match in a:gmatch("[0-9x.]+") do print(match) end
[0-9x.]
是一类字符。它匹配任何出现的数字0
到9
,
或x
因此,
“[0-9x.]+”
匹配任何可能包含
或x的数字序列。您的模式非常复杂
分辨率:`%d+x%d+“
%d
任意数字
%d+
一个或多个数字
x
字符x
刷新率:%d+%。%d+”
%。
一个点(转义的魔法字符
和%
,否则
表示任何字符)
一次性:
local a = "1234x5678 12.34 56.78"
for match in a:gmatch("[0-9x.]+") do print(match) end
[0-9x.]
是一类字符。它匹配任何出现的数字0
到9
,
或x
因此,“[0-9x.]+”
匹配任何可能也包含
或x
的数字序列,非常感谢。我想15分钟的文档阅读并没有太大帮助,但你能解释一下这些模式到底在做什么吗?@Raspberry Jam我建议你阅读一下这个页面,效果非常好,谢谢。我想15分钟的文档阅读并没有太大帮助,但你能解释一下这些模式到底在做什么吗?@Raspberry Jam我建议你阅读一下这个页面,