QString split return 空字符串列表
QString split return list of empty strings
使用这个正则表达式 B([^.]*)E
我试图从
中获取 B
和 E
之间的所有字符
B23432|234|24EB23432|2834|234EB23432|2134|234E
使用Qt4.8
QRegExp rx("B([^.]*)E");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
list = str.split(rx);
qDebug() << list;
它打印一个空字符串列表。不应该 return B
和 E
之间的所有字符串吗?
主要问题是你试图拆分,但实际上你需要在一个循环中找到所有匹配项并得到 capturedTexts()[1]
s(或 cap(1)
s)。
QRegExp rx("B([^E]*)E");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
list << rx.cap(1);
pos += rx.matchedLength();
}
qDebug() << list;
这也行。如果这有什么问题,请告诉我。
QRegExp rx("[B(.*)E]");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
list = str.split(rx, QString::SkipEmptyParts);
qDebug() << list;
使用这个正则表达式 B([^.]*)E
我试图从
B
和 E
之间的所有字符
B23432|234|24EB23432|2834|234EB23432|2134|234E
使用Qt4.8
QRegExp rx("B([^.]*)E");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
list = str.split(rx);
qDebug() << list;
它打印一个空字符串列表。不应该 return B
和 E
之间的所有字符串吗?
主要问题是你试图拆分,但实际上你需要在一个循环中找到所有匹配项并得到 capturedTexts()[1]
s(或 cap(1)
s)。
QRegExp rx("B([^E]*)E");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
list << rx.cap(1);
pos += rx.matchedLength();
}
qDebug() << list;
这也行。如果这有什么问题,请告诉我。
QRegExp rx("[B(.*)E]");
rx.setMinimal(true);
QString str = "B23432|234|24EB23432|2834|234EB23432|2134|234E";
QStringList list;
list = str.split(rx, QString::SkipEmptyParts);
qDebug() << list;