首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStringList不返回QRegularExpression索引

QStringList不返回QRegularExpression索引
EN

Stack Overflow用户
提问于 2019-11-25 09:03:51
回答 1查看 209关注 0票数 0

我做错了什么?我希望在QRegularExpression中找到一个字符串的索引,该索引与给定的QStringList匹配。

代码语言:javascript
复制
#include <QCoreApplication>
#include <QStringList>
#include <QRegularExpression>
#include <QDebug>

 int main(int argc, char *argv[])
 {
    QCoreApplication a(argc, argv);

    QStringList list{"bla-bla-bla"};

    qDebug() //Prints "true"
        << QRegularExpression("bla-*").match(list[0]).hasMatch();
    qDebug() //Prints "-1", but I want it was "0" here
        << list.indexOf(QRegularExpression("bla-*"));

    return a.exec();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 09:40:30

首先,考虑你的正则表达式..。

代码语言:javascript
复制
bla-*

默认情况下,QRegularExpression使用与Perl兼容的语法。这意味着*字符是一个量词,需要前面原子的零或多个。在这种情况下,所讨论的原子只是前面的字符:-。因此,您的正则表达式是请求文本bla,后面是零或多个-字符。

QStringList::indexOf状态的文档(我的重点)..。

返回列表中re的第一个精确匹配的索引位置,从索引位置开始搜索。返回-1如果没有匹配项

这有点让人困惑,但在这种情况下,短语exact match似乎表明,在正则表达式周围假定有隐含的开始和结束锚点。所以你实际上是在要求一个匹配的..。

代码语言:javascript
复制
^bla-*$

也就是说,文本bla在字符串的开头,后面跟着零个或多个-字符,然后是字符串的末尾。所以在这个案子里没有匹配。通过切换到..。

代码语言:javascript
复制
bla-.*

您将在字符串的开头请求匹配bla-,后面是任何值的零或多个字符,最后是字符串的结尾。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59028229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档