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
保持全局模式
正则表达式: (?<=\()[^)]*
解释:
(?<=\()
向后看 (
即左括号。
[^)]*
匹配括号内的内容,直到遇到右括号 )
。
更新:
我稍微更改了正则表达式。删除了 look ahead
部分 (?=\))
因为它是不必要的。 [^)]*
本身正在检查直到遇到右括号。
我想拆分表达式以获取括号中的内容:
例如。表达式可能如下所示:
(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
正则表达式: (?<=\()[^)]*
解释:
(?<=\()
向后看(
即左括号。[^)]*
匹配括号内的内容,直到遇到右括号)
。
更新:
我稍微更改了正则表达式。删除了 look ahead
部分 (?=\))
因为它是不必要的。 [^)]*
本身正在检查直到遇到右括号。