正则表达式每两个字符拆分字符串
Posted
技术标签:
【中文标题】正则表达式每两个字符拆分字符串【英文标题】: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
。我该怎么做?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于正则表达式每两个字符拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章