【问题标题】: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。我该怎么做?

【问题讨论】:

    标签: c++ qt qt4 qt5


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      相关资源
      最近更新 更多