Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正则表达式每两个字符拆分一个字符串_C++_Qt_Qt4_Qt5 - Fatal编程技术网

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

C++ 正则表达式每两个字符拆分一个字符串,c++,qt,qt4,qt5,C++,Qt,Qt4,Qt5,我需要处理一些像这样的QString“12ab,1a2ab f 12efa”,我想把它转换成QStringList像这样的(“12”,“ab”,“1a”,“2a”,“b”,“f”,“12”,“ef”,“a”) 输出: ("12", "ab", "1a", "2ab", "f", "12efa") 因此,如果regexp能够每两次拆分一次,我可以使用QString::split。如何实现这一点?使用不同的正则表达式,然后使用QRegularExpressionMatchIterator将匹配项添

我需要处理一些像这样的
QString
“12ab,1a2ab f 12efa”,我想把它转换成
QStringList
像这样的
(“12”,“ab”,“1a”,“2a”,“b”,“f”,“12”,“ef”,“a”)

输出:

("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;
}
#包括
#包括
#包括
#包括
内部主(空)
{
QString字符串(“12 ab、1a、2ab f 12efa”);
qregularexpressionre(([\\w]{1,2})”;
QRegularExpressionMatchIterator i=re.globalMatch(字符串);
QStringList表;
while(i.hasNext()){
QRegularExpressionMatch=i.next();
QString word=match.captured(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;
}