给定一个 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}")
which 返回db41aa6a-c0b8-11e9-bc8a-806e6f6e6963
。