QRegularExpression是否在其regex引擎中提供前瞻性测试?我已经测试了这个例子,我没有得到匹配的字符串。
QString s = "px1 pt 2px 3em 4px";
QRegularExpression re("\\d(?=px)");
auto match = re.match(s);
qDebug()<< match.lastCapturedIndex();结果是0。
发布于 2017-01-12 20:01:07
QRegularExpression使用PCRE,因此它支持查找头、后置查找,甚至是惰性的量词。在您的示例中,只有一个完整的匹配值,没有捕获,因此使用match.captured(0)访问该值。
使用
QRegularExpression re("\\d+(?=px)");
QRegularExpressionMatchIterator i = re.globalMatch("px1 pt 2px 3em 4px");
QStringList words;
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
QString word = match.captured(0);
words << word;
}
// words contains "2", "4"只有在后面跟着\d+(?=px)文字字符序列时,1+模式才会匹配px数字。
发布于 2017-01-12 18:49:08
为什么你的第二行有一个额外的反斜杠?为什么不使用
\d+(?=px)而不是
\\d(?=px)我添加一个+的原因是因为\d只捕获1位数字,+允许它捕获一个或多个数字
我不确定查找在正则表达式引擎中是否有效,但是如果不能,您可以使用这个
(\d+)px有关示例,请参见以下内容:
https://stackoverflow.com/questions/41620665
复制相似问题