Qt 中常用正则表达式

这次因项目需要才开始用Qt ,多处都需要使用到一些字符串的检查。正则表达式是不二之选,因此将一些在用和经常会用到的正则表达式记录下来,方便以后摘用。


判断是否是一个合法的URL :

bool NewDown::existUrl(const QString &strText)
{
    bool bResult = false;
    QString strTempText = strText;
    QString strUrlExp = "((http|https|ftp)://|(www)\\.)(\\w+)(\\.?[\\.a-z0-9/:?%&=\\-_+#;]*)"; //url正则
    QRegExp urlRegExp(strUrlExp,Qt::CaseInsensitive); //Url正则表达式,不区分大小写
    while(urlRegExp.indexIn(strTempText) != -1)
    {
        bResult = true;
        QString strWebUrl = urlRegExp.cap(0);//匹配到的url

        qDebug() << strWebUrl; //输出url
        int nIndex = strTempText.indexOf(strWebUrl); //索引位置
        strTempText.remove(0,nIndex+strWebUrl.size()); //删除已遍历过的内容
    }
    return bResult; //返回是否包含url
}


在QString中提供了正则表达式可以将多个符号替换成一个符号,下面以空格为例,将多个空格替换成一个空格:

Qstring str;
str.replace(QRegExp("[\\s]+"), " ");  //把所有的多余的空格转为一个空格

\\s表示   空格,回车,换行等空白符,    

 +号表示匹配一个或多个的意思