是否可以在 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 中扩展该类?