QT正则表达式获取括号之间的内容

QT Regular Expression getting contents between brackets

我想拆分表达式以获取括号中的内容:

例如。表达式可能如下所示:

    (center:SCREEN)-(25%:SCREEN_WIDTH)

到目前为止,我的代码如下所示:

    QStringList lstTerms = strProcessed.split("/\(([^)]+)\)/")

但这只是returns:

    (center:SCREEN)-(25%:SCREEN_WIDTH)

我想要的是包含两个元素的数组,在上面的例子中:

    [0] center:SCREEN
    [1] 25%:SCREEN_WIDTH

谢谢@noob,最后例程:

QRegularExpression regex("(?<=\()[^)]*(?=\))");
QRegularExpressionMatchIterator matches = regex.globalMatch(strProcessed);
QStringList slstTerms;

while( matches.hasNext() ) {
    QRegularExpressionMatch match = matches.next();

    if (match.hasMatch()) {
        slstTerms.append(match.captured(0));
    }
}

尝试使用 look around 个断言。使用 g

保持全局模式

正则表达式: (?<=\()[^)]*

解释:

  • (?<=\() 向后看 ( 即左括号。

  • [^)]* 匹配括号内的内容,直到遇到右括号 )

Regex101 Demo


更新:

我稍微更改了正则表达式。删除了 look ahead 部分 (?=\)) 因为它是不必要的。 [^)]* 本身正在检查直到遇到右括号。