2016-09-24 63 views
0

QStringのようなものを処理する必要があります。" 12 ab, 1a 2ab f 12efa "のようにQStringList("12", "ab", "1a", "2a", "b", "f", "12", "ef", "a"))に変換します。正規表現分割文字列2文字ごと

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

出力:

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

regexpは2つずつを分割することが可能であるのであれば、私はちょうどQString::splitでそれを行うことができます。これどうやってするの?

答えて

1

異なる正規表現を使用すると、QRegularExpressionMatchIteratorを使用して一致をQStringListに追加する方が簡単です。

正規表現([\\w]{1,2}])正規表現または1語の文字が一致する正規表現を取得してキャプチャします。

次のコードを調べて、必要なものがあるかどうかを確認してください。

#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; 
} 
関連する問題