c++ - QregularExpression 中的前瞻性断言

标签 c++ regex qt

QRegularExpression 是否在其正则表达式引擎中提供先行断言? 我已经测试了这个示例,但没有匹配的字符串。

QString s = "px1 pt 2px 3em 4px";
QRegularExpression re("\\d(?=px)");
auto match = re.match(s);
qDebug()<< match.lastCapturedIndex();

结果是 0。

最佳答案

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"

仅当后跟 px 文字字符序列时,\d+(?=px) 模式才匹配 1+ 位数字。

关于c++ - QregularExpression 中的前瞻性断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41620665/

相关文章:

c++ - 我想创建一个嵌套数组,其中包含来自另一个数组的所有元素,但分为两个

c++ - 我想在运行 C++ .exe 时停止 CMD

正则表达式 : replace a phrase only if NOT preceded by a word

逐行运行文件的python -regex匹配和for循环

c++ - 使用 qmake 构建多个版本的二进制文件

c++ - 使用 RInside 阅读 R 控制台

c++ - 从另一个对象指向线程对象 : dangerous?

C++在标点符号后将字符串换行

javascript - 甚至在正则表达式上使用匹配丢失的匹配项

c++ - QT中数组指针对象的指针