我正在尝试使用此正则表达式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;
它显示一个空字符串列表。它不应该返回
B
和E
之间的所有字符串吗? 最佳答案
主要问题是您试图拆分,但实际上您需要在循环中查找所有匹配项并获取capturedTexts()[1]
(或cap(1)
)。
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;