Regex每两个字符分割字符串

Regex split string every two characters

本文关键字:两个 字符 分割 字符串 Regex      更新时间:2023-10-16

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

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

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

因此,如果regexp能够拆分每两个,我可以使它只与QString::split。我该怎么做呢?

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

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

检查下面的代码,看看这是否是你需要的。

#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;
}