是否可以在 build.gradle 中为字符串执行 REGEX?

Posted

技术标签:

【中文标题】是否可以在 build.gradle 中为字符串执行 REGEX?【英文标题】:Is it possible to do REGEX in build.gradle for a string? 【发布时间】:2021-02-02 19:09:10 【问题描述】:

我在应用级别的 build.gradle 中有以下代码行

    applicationVariants.all  variant ->
    variant.resValue "string", "versionName", "Version " + variant.versionName

有没有办法执行正则表达式并只抓取特定部分

variant.versionName

它返回给我类似 2.56.2-alpharc 的东西,我想删除除开头的数字之外的所有内容以获得 2.56.2

【问题讨论】:

【参考方案1】:

当然可以。您可以使用带有正则表达式的常规 java 代码或一些 groovy 特定代码:

对于 java 方法,还有一些东西:

    Pattern pattern = Pattern.compile("^(\\d+\\.\\d+\\.\\d+).*");
    Matcher matcher = pattern.matcher(variant.versionName);
    matcher.find()
    def strippedVersion = matcher.group(1)

对于常规方法:

    def matcher = variant.versionName =~ /^(\d+\.\d+\.\d+).*/
    matcher.find()
    def strippedVersion = matcher.group(1)

【讨论】:

非常感谢!如果我理解正确,它是说它必须找到一个以 \\d+\\.\\d+\\.\\d+ 开头的模式,但是为什么整个模式之后会有一段时间?当我搜索时,这意味着匹配任何字符? 我想我对 .* 的含义感到困惑 .* 匹配任何字符零次或多次。我添加它以匹配字符串的其余部分,但可能没有必要。

以上是关于是否可以在 build.gradle 中为字符串执行 REGEX?的主要内容,如果未能解决你的问题,请参考以下文章

在 build.gradle 中为 Selenium 测试程序定义 WebDriver 路径,而不是以编程方式设置系统属性

如何在intelliJ IDEA中为我现有的Kotlin项目生成build.gradle文件

Gradle:是不是可以在 gradle 插件中定义 CustomTask 并从 build.gradle 中扩展该类?

将 maven 存储库添加到 build.gradle

Android:如何在build.gradle中获取资源字符串以支持多种语言的多种口味?

如何调试 Gradle build.gradle 文件(在调试器中,带有断点)?