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

Posted

技术标签:

【中文标题】正则表达式每两个字符拆分字符串【英文标题】:Regex split string every two characters 【发布时间】:2016-09-24 12:42:13 【问题描述】:

我需要处理一些类似于" 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")

因此,如果正则表达式能够每两个拆分,我可以只使用QString::split。我该怎么做?

【问题讨论】:

【参考方案1】:

使用不同的正则表达式更容易,然后使用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;

【讨论】:

以上是关于正则表达式每两个字符拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章

当正则表达式的某些部分要保存在后续的分割字符串中时,如何使用正则表达式在R中拆分字符串?

Pandas 正则表达式拆分字符和组

通过正则表达式拆分字符串[重复]

正则表达式 .net 拆分

拆分正则表达式以提取连续字符的字符串

使用正则表达式拆分字符串值