【问题标题】:C++ Qt - QString remove() regex between {brackets}C ++ Qt - {括号}之间的QString remove()正则表达式
【发布时间】:2013-09-25 23:25:51
【问题描述】:

我尝试了以下正则表达式来删除括号之间的 {anything}(希望括号本身)!

    mystr.remove(QRegExp("\\{(.*?)\\}"));
    mystr.remove(QRegExp("\{(.*?)\}"));

什么都没有删除

【问题讨论】:

    标签: c++ qt qstring qregexp qtcore


    【解决方案1】:

    .*? 无效。试试下面的代码:

    main.cpp

    #include <QString>
    #include <QDebug>
    #include <QRegExp>
    
    int main()
    {
        QString mystr = "te{foo}st";
        qDebug() << mystr.remove(QRegExp("\\{(.*)\\}"));
    
        return 0;
    }
    

    编译

    这可能不是您需要运行的确切命令,因此请尝试针对您的特定场景调整概念。

    g++ -I/usr/include/qt/QtCore -I/usr/include/qt -fPIC -lQt5Core main.cpp && ./a.out
    

    输出:"test"

    【讨论】:

    • 我遇到了与@y2k 相同的问题,经过一段时间的搜索,我发现了这个答案。不明白为什么.*?对 QT 无效我进行了后续搜索,发现 .*?只是目前无效,因为 QT 不支持非贪婪表达式:qt-project.org/wiki/Regexp_engine_in_Qt5
    • 只是补充一点,Qt 支持非贪婪表达式,但在正则表达式代码中不支持。请参阅 QRegExp::setMinimal。
    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多