当前位置: 代码迷 >> QT开发 >> Qt的正则表达式奇怪的有关问题
  详细解决方案

Qt的正则表达式奇怪的有关问题

热度:210   发布时间:2016-04-25 03:06:59.0
Qt的正则表达式奇怪的问题
Hi,我有一个字符串,比如:"Test>=5" (不包含引号),想要解析成:
Test
>=
5
三个部分,于是用正则匹配,代码如下:


QRegExp splitor("(.+?)\\s*([!<>=]+)\\s*(.+)");
QStringList parters = raw_condition.split(splitor, QString::KeepEmptyParts);


但是这里解析出的partners的size总是1,无法正确匹配,请问是什么情况内?
------解决思路----------------------

    // 先获取操作数
    QString raw_condition("Test<!>=5");
    QRegExp splitor("[!<>=]+");
    QStringList parters = raw_condition.split(splitor, QString::KeepEmptyParts);

    // 替换掉操作数,得到操作符
    raw_condition.replace(parters.at(0), "");
    QString theOperator = raw_condition.replace(parters.at(1), "");

------解决思路----------------------
如果使用split只有一种办法.

    QString raw_condition = "Test>=5";
    QRegExp splitor("\\b");
    QStringList parters = raw_condition.split(splitor, QString::KeepEmptyParts);
    qDebug() << parters;


原因是因为split的参数splitor,是会被去掉的.比如果说a=5,如果你用'='进行分割,结果里面是不会出现'='的.
你这里的split把所有的情况都匹配了,"Test>=5"去掉分割符(所有),剩下什么都没有了.