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"去掉分割符(所有),剩下什么都没有了.