首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于正则的两个有关问题

2013-06-25 
关于正则的两个问题第一个问题如下面代码:QRegExp rxlen((\\d+)(?:\\s*)(cm|inch))int pos3 rxlen.in

关于正则的两个问题
第一个问题如下面代码:  
QRegExp rxlen("(\\d+)(?:\\s*)(cm|inch)");
    int pos3 = rxlen.indexIn("Length: 189cm");
    if (pos3 > -1) {
        QString value = rxlen.cap(1);  // 结果为189
        QString unit = rxlen.cap(2);   // 结果为cm
        QString string = rxlen.cap(0); // 结果为189cm
        qDebug() << value << unit << string;
    }
小问题1:(?:\\s*)这个代表什么意思?
小问题2:为什么QString string = rxlen.cap(0);的结果为189cm??.cap(0)和.cap(1)我能理解,就是代表匹配后的第一和第二个字符,但是.cap(0)不清楚什么意思。
第二个问题乳下面代码:

    QRegExp rx5("\\b(\\w+)\\W+\\1\\b");
    rx5.setCaseSensitivity(Qt::CaseInsensitive);  // 设置不区分大小写
    qDebug() << rx5.indexIn("Hello--hello");      // 结果为0
    qDebug() << rx5.cap(1);                       // 结果为Hello
小问题3:我觉得qDebug() << rx5.cap(1);  这条语句执行后的代码应该是“Hello--”,但是为什么是“Hello”呢,我觉得"Hello--hello"符合匹配规则的是“Hello--”,且只有这么一个符合条件。
大家帮我分析下啊,谢谢了。

热点排行