Qt 正则表达式学习

void fun_QVariant(){
    /*
     * 1. Algorithms
     */
    double a=-19.3, b=9.7;
    double c = qAbs(a);
    double max = qMax(b, c);

    int bn = qRound(b);
    int cn = qRound(c);

    qDebug()<<"a="<<a;
    qDebug()<<"b="<<b;
    qDebug()<<"c=qAbs(a)="<<c;
    qDebug()<<"qMax(b,c)="<<max;
    qDebug()<<"bn=qRound(b)="<<bn;
    qDebug()<<"cn=qRound(c)="<<cn;

    qSwap(bn,cn);
    qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<" cn="<<cn;

    /*
     * 2. basic expressions=expressions+quantifiers+assertions
     */
    /*
     * 2.1 E* 匹配0次或多次
     */
    QString mStr = "abcdefgh";
    QRegExp exp1("[a-z]*");
    if(exp1.exactMatch(mStr))
    {
        qDebug() << "exp1: True";
    }
    else {
        qDebug() << "exp1: False";
    }

    /*
     * 2.2 Qt::CaseInsensitive忽略大小写
     */
    QRegExp exp2("[A-Z]*", Qt::CaseInsensitive);
    if(exp2.exactMatch(mStr))
    {
        qDebug() << "exp2: True";
    }
    else {
        qDebug() << "exp2: False";
    }

    /*
     * 2.3 [^] 取反
     */
    QRegExp exp3("[^A-Z0-9]*");
    if(exp3.exactMatch(mStr))
    {
        qDebug() << "exp3: True";
    }
    else {
        qDebug() << "exp3: False";
    }

    /*
     * 2.4 E? 匹配0次或1次
     */
    QRegExp exp4("abcdefgh[a-z]?");
    if(exp4.exactMatch(mStr))
    {
        qDebug() << "exp4: True";
    }
    else {
        qDebug() << "exp4: False";
    }

    /*
     * 2.5 E+ 匹配1次或多次
     */
    QRegExp exp5("abcdefgh[a-z]+");
    if(exp5.exactMatch(mStr))
    {
        qDebug() << "exp5: True";
    }
    else {
        qDebug() << "exp5: False";
    }

    /*
     * 2.6 E{n} E{m,n} 匹配n次
     */
    QRegExp exp6("abcdefgh{1}");
    if(exp6.exactMatch(mStr))
    {
        qDebug() << "exp6: True";
    }
    else {
        qDebug() << "exp6: False";
    }

    /*
     * 2.7  [&] 断言结束符
     */
    QRegExp exp7("[a-z]+h$");
    if(exp7.exactMatch(mStr))
    {
        qDebug() << "exp7: True";
    }
    else {
        qDebug() << "exp7: False";
    }

    /*
     * 2.8  [\b] 断言单词边界 [\B] 断言非单词边界
     */
//    QRegExp exp8("^[a-z]*\b");
//    if(exp8.indexIn("ah", 0) != -1)
//    {
//        qDebug() << "exp8: True";
//    }
//    else {
//        qDebug() << "exp8: False";
//    }

    /*
     * 2.9  (?=E) 表示表达式后紧随E才匹配
     */
    QRegExp exp9("[a-z].*(?=h)");
    if(exp9.indexIn(mStr, 0) != -1)
    {
        qDebug() << "exp9: True";
    }
    else {
        qDebug() << "exp9: False";
    }

    /*
     * 2.10  (?!E) 表示表达式后不跟随E才匹配
     */
    QRegExp exp10(".*(?!m)");
    if(exp10.indexIn(mStr, 0) != -1)
    {
        qDebug() << "exp10: True";
    }
    else {
        qDebug() << "exp10: False";
    }
}

代码输出:

a= -19.3
b= 9.7
c=qAbs(a)= 19.3
qMax(b,c)= 19.3
bn=qRound(b)= 10
cn=qRound(c)= 19
qSwap(bn,cn): bn= 19  cn= 10
exp1: True
exp2: True
exp3: True
exp4: True
exp5: False
exp6: True
exp7: True
exp9: True
exp10: True

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值