Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 解析Maven文件名_Regex_Groovy_Gradle - Fatal编程技术网

Regex 解析Maven文件名

Regex 解析Maven文件名,regex,groovy,gradle,Regex,Groovy,Gradle,如何将maven文件名解析为工件和版本 文件名如下所示: test-file-12.2.2-SNAPSHOT.jar test-lookup-1.0.16.jar 我需要去 test-file 12.2.2-SNAPSHOT test-lookup 1.0.16 因此,artifactId是破折号和数字的第一个实例之前的文本,版本是直到.jar的数字的第一个实例之后的文本 我可能可以通过拆分、几个循环和检查来实现,但感觉应该有一种更简单的方法 编辑: 事实上,正则表达式并不像我想象的那么复

如何将maven文件名解析为工件和版本

文件名如下所示:

test-file-12.2.2-SNAPSHOT.jar
test-lookup-1.0.16.jar 
我需要去

test-file
12.2.2-SNAPSHOT
test-lookup
1.0.16
因此,artifactId是破折号和数字的第一个实例之前的文本,版本是直到.jar的数字的第一个实例之后的文本

我可能可以通过拆分、几个循环和检查来实现,但感觉应该有一种更简单的方法

编辑:

事实上,正则表达式并不像我想象的那么复杂

   new File("test").eachFile() { file ->
    String fileName = file.name[0..file.name.lastIndexOf('.') - 1]
    //Split at the first instance of a dash and a number
    def split = fileName.split("-[\\d]")
    String artifactId = split[0]
    String version = fileName.substring(artifactId.length() + 1, fileName.length())

    println(artifactId)
    println(version)
  }
EDIT2:嗯。在以下示例中失败:

http://mvnrepository.com/artifact/org.xhtmlrenderer/core-renderer/R8
core-renderer-R8.jar

基本上就是这个
^(+?)-(\d.*?)\.jar$

如果有多行,则在多行模式下使用

 ^ 
 ( .+? )
 -
 ( \d .*? )
 \. jar
 $ 
输出:

 **  Grp 0 -  ( pos 0 , len 29 ) 
test-file-12.2.2-SNAPSHOT.jar  
 **  Grp 1 -  ( pos 0 , len 9 ) 
test-file  
 **  Grp 2 -  ( pos 10 , len 15 ) 
12.2.2-SNAPSHOT  

--------------------------

 **  Grp 0 -  ( pos 31 , len 22 ) 
test-lookup-1.0.16.jar  
 **  Grp 1 -  ( pos 31 , len 11 ) 
test-lookup  
 **  Grp 2 -  ( pos 43 , len 6 ) 
1.0.16  

让我思考我需要做什么。谢谢