【发布时间】:2019-11-17 19:16:32
【问题描述】:
给定一个 QString,我想从主字符串输入中提取一个子字符串。
例如我有一个 QString 读取类似的内容:
\\\\?\\Volume{db41aa6a-c0b8-11e9-bc8a-806e6f6e6963}\\
我需要使用与正则表达式格式(\w){8}([-](\w){4}){3}[-](\w){12}匹配的模板/格式来提取字符串(如果存在该格式的字符串),如下所示:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
它应该返回
db41aa6a-c0b8-11e9-bc8a-806e6f6e6963
如果找到,则为空QString。
目前,我可以通过执行以下操作来实现:
string.replace("{", "").replace("}", "").replace("\\", "").replace("?", "").replace("Volume", "");
但这既乏味又低效,而且是根据特定要求量身定制的。
是否有一个通用函数可以让我使用正则表达式或其他格式提取子字符串?
更新
在@Emma 的回答之后,为了清楚起见,我想要例如QString::extract("(\w){8}([-](\w){4}){3}[-](\w){12}") 返回 db41aa6a-c0b8-11e9-bc8a-806e6f6e6963。
【问题讨论】:
标签: regex string qt qregexp qregularexpression