Regex每两个字符分割字符串
Regex split string every two characters
我需要处理一些看起来像这个" 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")
因此,如果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;
}
相关文章:
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 在函数中连接两个字符,并在 C++ 中返回输出
- 舍入 QDecDouble 值,精度最多为两个字符
- 计算两个字符序列
- 在c++中连接两个字符
- 有没有办法我可以从 istringstream 中读取两个字符
- 如何查看两个字符变量是否相等
- 使用位于 C 字符串中的两个字符*获取子字符串
- 比较两个字符的问题
- 如何修复密码条目,它一次输入两个字符
- 字符串构造函数将两个字符* 放入另一个 std::string 在 C++14 中有效,但不适用于 C++17
- 将两个字符数组相互添加
- 在 c++ 中添加两个字符
- 如何删除QString的前两个字符
- 如何使用两个字符来控制 C++ 程序的流程
- 如何将两个字符或字符串数组附加到一个数组中
- 如何从两个字符之间的文件中提取整数
- 删除两个字符之间的文本
- std::setw() 将特殊字符视为两个字符
- 比较两个字符*是否相等