正则表达式每两个字符拆分字符串

Regex split string every two characters

我需要处理一些看起来像这样 " 12 ab, 1a 2ab f 12efa "QString,我想将它转换成像这样的 QStringList ("12", "ab", "1a", "2a", "b", "f", "12", "ef", "a")

QString string("  12 ab, 1a, 2ab f 12efa    ");
QStringList list;
list = string.split(QRegularExpression("[\s|,]"), QString::SkipEmptyParts);

输出:

("12", "ab", "1a", "2ab", "f", "12efa")

所以如果正则表达式能够一分为二,我就可以用 QString::split 来实现。我该怎么做?

使用不同的正则表达式更容易,然后使用 QRegularExpressionMatchIterator 将匹配项添加到 QStringList

([\w]{1,2}]) 正则表达式将匹配并捕获一对连续的 word characters 或单个单词字符。

检查以下代码,看看这是否是您需要的。

#include <QString>
#include <QStringList>
#include <QDebug>
#include <QRegularExpression>

int main(void)
{
    QString string("  12 ab, 1a, 2ab f 12efa    ");

    QRegularExpression re("([\w]{1,2})");
    QRegularExpressionMatchIterator i = re.globalMatch(string);

    QStringList list;
    while (i.hasNext()) {
        QRegularExpressionMatch match = i.next();
        QString word = match.captured(1);
        list << word;
    }

    qDebug() << list;

    return 0;
}