我需要处理一些看起来像QString
的{{1}},我想将其转换为" 12 ab, 1a 2ab f 12efa "
,例如QStringList
。
("12", "ab", "1a", "2a", "b", "f", "12", "ef", "a")
输出:
QString string(" 12 ab, 1a, 2ab f 12efa ");
QStringList list;
list = string.split(QRegularExpression("[\\s|,]"), QString::SkipEmptyParts);
因此,如果正则表达式能够每两个分割一次,我可以使用("12", "ab", "1a", "2ab", "f", "12efa")
进行分割。我怎么能这样做?
答案 0 :(得分:2)
使用不同的正则表达式更容易,然后使用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;
}