解析xrandr响应的正则表达式

时间:2016-05-28 19:15:30

标签: c++ regex qt

我需要在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+| 

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

1 个答案:

答案 0 :(得分:3)

由于您希望匹配该行上第一个文本的分辨率,您可以使用正则表达式,如

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

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

请参阅regex demo

示例Qt演示:

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