qt - Qt - 如何从包含在特定模式中的 QString 中提取文本片段
问题描述
以此为例
QString("= LINK(aaa) + 2 + LINK(bbb) + LINK(ccc)");
我想查找 LINK() 中包含的所有文本出现。
在我的情况下,它应该返回 aaa、bbb 和 ccc
解决方案
为此使用QRegExp
。
QString s("= LINK(aaa) + 2 + LINK(bbb) + LINK(ccc)");
QRegExp rx("LINK\\((.+)\\)");
rx.setMinimal(true);
int i = rx.indexIn(s);
while(i != -1)
{
qDebug() << rx.capturedTexts() << rx.cap(1);
i = rx.indexIn(s, i) + rx.cap(0).length();
}
QRegExp::indexIn
将返回第一场比赛的位置。添加捕获文本的长度允许您浏览整个字符串。
就我而言,我必须使用QRegExp::setMinimal()
使正则表达式不贪婪。如果你只有字母或数字,你可以用类似的东西改变模式QRegExp rx("LINK\\((\\w+)\\)")
推荐阅读
- android - 我们如何在 kotlin 中使用自定义字体创建 TextView 的自定义类?
- google-cloud-storage - 允许用户从浏览器上传文件到谷歌云存储
- java - 如何从url中获取一串字符
- python-3.x - 混合精度训练报告RET_CHECK失败,ShapeUtil::Equal(first_reduce->shape(), inst->shape())
- apache - Apache Config 代理 SSL
- python-3.x - 如何在读取文件路径时使用变量?
- neo4j - Neo4j.rb : 用户有很多共同朋友的朋友的朋友
- reactjs - 如何将 jsconfig.json 添加到现有的 vscode 项目而不破坏它
- node.js - 有谁知道为什么我通过 heroku 部署的 Docker 映像与本地创建的不同
- http - 如何在没有任何 vue 库的情况下在 vue 回调中获取 http 响应标头(axios)