我需要在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+|
任何建议都会有所帮助。谢谢。
答案 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));
}