专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

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

发布时间:2010-05-30 19:46:36 文章来源:www.iduyao.cn 采编人员:星星草
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"去掉分割符(所有),剩下什么都没有了.

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: