在Groovy或Java中实现re.search()功能

时间:2019-02-07 13:18:16

标签: java groovy

我需要一个Groovy / Java函数来基于正则表达式搜索字符串中的组

例如:

function("([\w-]+)-([\w.-]+)\.([\w.-]+)" ,"commons-collections-3.2.2.jar" )

应返回列表["commons-collections" , "3.2.2" , "jar"]

Python可以通过

完成此操作
>> import re

>> re.search("([\w-]+)-([\w.-]+)\.([\w.-]+)" ,"commons-collections-3.2.2.jar" )

>> print(result.groups()) 

输出为("commons-collections" , "3.2.2" , "jar")

1 个答案:

答案 0 :(得分:0)

这是常规的简单而基本的任务。我希望这个答案能对您有所帮助。

"commons-collections-3.2.2.jar".findAll(/([\w-]+)-([\w.-]+)\.([\w.-]+)/) {    
    println it 
}

这将产生输出:

[commons-collections-3.2.2.jar, commons-collections, 3.2.2, jar]

更新:

正如@tim_yates在评论中提到的,

println "commons-collections-3.2.2.jar".findAll(/([\w-]+)-([\w.-]+)\.([\w.-]+)/) { it.tail() }

与以上相比,它提供了更好的输出,并且也更加针对任务。

输出:

[[commons-collections, 3.2.2, jar]]