微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 qmake 文件中使用正则表达式

如何解决在 qmake 文件中使用正则表达式

我有这个正则表达式检查在我的 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";
}

我想把它移到专业文件中,比如

# pseudo code
contains(VERSION,((?:(\d+\.[.\d]*\d+)))){
   // yada yada
}

假设 VERSION 带有类似 yada-1.2.3 的字符串

如何在 pro 文件中使用正则表达式?

解决方法

看看contains documentation

可以为参数值指定正则表达式。

在你的情况下,你可以使用

contains(OSDISTRO,.*\d+(?:\.\d+)+) {
...
}

这里,模式是 .*\d+(?:\.\d+)+ 并且匹配

  • .* - 尽可能多的零个或多个字符
  • \d+ - 一位或多位数字
  • (?:\.\d+)+ - 一个或多个点和一个或多个数字的重复。

这也意味着,模式必须匹配整个字符串,这就是之前尝试失败的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。