正则表达式每两个字符拆分字符串
Regex split string every two characters
我需要处理一些看起来像这样 " 12 ab, 1a 2ab f 12efa "
的 QString
,我想将它转换成像这样的 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")
所以如果正则表达式能够一分为二,我就可以用 QString::split
来实现。我该怎么做?
使用不同的正则表达式更容易,然后使用 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;
}
我需要处理一些看起来像这样 " 12 ab, 1a 2ab f 12efa "
的 QString
,我想将它转换成像这样的 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")
所以如果正则表达式能够一分为二,我就可以用 QString::split
来实现。我该怎么做?
使用不同的正则表达式更容易,然后使用 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;
}