在 qmake 文件中使用正则表达式
Use regular expression in qmake file
我在我的 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 文件中使用正则表达式?
It is possible to specify a regular expression for parameter value.
在你的情况下,你可以使用
contains(OSDISTRO, .*\d+(?:\.\d+)+) {
...
}
在这里,模式是 .*\d+(?:\.\d+)+
并且匹配
.*
- 尽可能多的任意零个或多个字符
\d+
- 一位或多位数字
(?:\.\d+)+
- 一个点和一个或多个数字的一次或多次重复。
这也意味着,模式必须匹配整个字符串,这就是之前尝试失败的原因。
我在我的 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 文件中使用正则表达式?
It is possible to specify a regular expression for parameter value.
在你的情况下,你可以使用
contains(OSDISTRO, .*\d+(?:\.\d+)+) {
...
}
在这里,模式是 .*\d+(?:\.\d+)+
并且匹配
.*
- 尽可能多的任意零个或多个字符\d+
- 一位或多位数字(?:\.\d+)+
- 一个点和一个或多个数字的一次或多次重复。
这也意味着,模式必须匹配整个字符串,这就是之前尝试失败的原因。