c++ - QString拆分返回空字符串列表

标签 c++ regex qt4

使用此正则表达式 B([^.]*)E 我试图从 BE 之间获取所有字符

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;

它打印一个空字符串列表。它不应该返回 BE 之间的所有字符串吗?

最佳答案

主要问题是您正在尝试拆分,但实际上您需要在循环中找到所有匹配项并获取 capturedTexts()[1]s(或 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;

关于c++ - QString拆分返回空字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019072/

相关文章:

C++:使用递归搜索功能更新二叉搜索树?

c++ - 使用 C++ 登录到 Windows 上的事件查看器

c++ - 是否保证标准提取运算符>>在失败的情况下不会更改参数?

无效 Base64 字符的正则表达式

java - 用一个副本替换一系列子字符串

python - 在带有 QT4 的 Python 中使用像素图或图像序列制作动画

c++ - 浮点值可以加到零之和吗?

用于验证 youtube 嵌入 url 的 javascript 正则表达式

c++ - QList + QVariant + dbus,有什么区别?

QT新手: Add action handler for multiple objects of same type