【发布时间】:2021-04-12 10:17:44
【问题描述】:
我有这个正则表达式检查我的 cpp 文件中的版本号
QString parseVersion()
{
// https://regex101.com/r/nFMiA0/1
QRegularExpression re{R"((?:(\d+\.[.\d]*\d+)))"};
if(auto match = re.match(VERSION); match.hasMatch()){
return match.captured();
}
return "0.0.0";
}
我想把它移到 pro 文件中,比如
# pseudo code
contains(VERSION, ((?:(\d+\.[.\d]*\d+)))){
// yada yada
}
假设VERSION 带有类似yada-1.2.3 的字符串
如何在 pro 文件中使用正则表达式?
【问题讨论】:
-
我不知道您是否必须使用捕获组,但您也可以使用
\d+(?:\.\d+)+获得相同的匹配项 -
看看docs:可以为参数值指定正则表达式。
contains(OSDISTRO, \d+\.[.\d]*\d+){应该和你的正则表达式一样工作。 -
@WiktorStribiżew 它不适用于像
yada-1.2.3这样的字符串 -
好的,
.*\d+(?:\.\d+)+有效吗? -
@WiktorStribiżew 确实如此!如果你写一个答案,我会接受它。也许你能解释一下以前的尝试没有奏效吗?我对此有点困惑