用于解析 xrandr 响应的正则表达式

Regular expression for parse xrandr response

本文关键字:正则表达式 响应 xrandr 用于      更新时间:2023-10-16

我需要在 Ubuntu 上的 Qt 应用程序中获取显示支持的分辨率。我通过QProcess运行xrandr命令,并在以下视图中接收显示分辨率:

屏幕 0:最小 320 x 200,当前 1366 x 768,最大 8192 x 8192 VGA-0 断开(正常左倒右 x 轴 y 轴) LVDS 连接主 1366x768+0+0(正常左倒右 x 轴 y 轴) 344mm x 193mm

 1366x768      59.99*+
 1280x720      59.86  

等。

这种情况的正则表达式是什么?首先,我可以删除分辨率之前的所有文本,然后使用类似
的东西
^s+ | [0-9]*x[0-9] | *s+$

^s+| [0-9]* ([0-9]) * (x) d{3}  |s+| 

任何建议都会有所帮助。谢谢。

由于您要匹配作为该行第一个文本的分辨率,因此您可以使用正则表达式,例如

"(?:^|[rn]+) *(\d+ *x *\d+)"

第一个非捕获组(?:^|[rn])匹配字符串或换行符的开头, *匹配零个或多个空格,然后第二个捕获组匹配 1+ 数字、0+ 空格、x 、再次匹配 0+ 空格和 1+ 数字。

查看正则表达式演示

Qt演示示例:

QRegExp rx("(?:^|[rn]+) *(\d+ *x *\d+)");
int pos = 0;
while ( (pos = rx.search(text, pos)) != -1 ) 
{
     someFunction(rx.cap(1));
}