路径目录的正则表达式

时间:2011-04-01 08:10:09

标签: regex

我需要一个正则表达式来提取JAR名称和版本。输入值采用以下格式:

C:\WORK\Modify file\test2\lib\messageclass-12.jar
C:\WORK\Modify file\test2\lib\utilities-396.jar
C:\WORK\Modify file\test2679\lib\castor-1.jar
输出应该是:

messageclass
12

utilities
396

castor
1

感谢任何帮助。 的更新

我在ant脚本中使用它来在2个属性中提取值:messageclass和12如下:

<propertyregex override="yes" property="propA" input="@{file}" regexp="here should be the regex" replace="" global="true" />    

和@ {file}实际上是C:\ WORK \ Modify file \ test2 \ lib \ messageclass-12.jar

可以在http://ant-contrib.sourceforge.net/tasks/tasks/for.html

上找到示例

基于您的建议的最终解决方案是:

            <!-- calculate jar name -->
            <propertyregex override="yes" property="jarname" input="@{file}" regexp="-(\d*)\.jar" replace="" global="true"/>
            <propertyregex override="yes" property="jarname" input="${jarname}" regexp=".*\\(\S*)\\" replace="" global="true"/>
            <!-- calculate jar version -->
            <propertyregex override="yes" property="jarversion" input="@{file}" regexp=".*\\(\S*)-" replace="" global="true"/>
            <propertyregex override="yes" property="jarversion" input="${jarversion}" regexp=".jar" replace="" global="true"/>

2 个答案:

答案 0 :(得分:1)

试试这个:

/.*\\(.*)-(\d+)\.jar/

Capture 1将具有该名称,并捕获2版本号。

此示例位于Rubular

答案 1 :(得分:1)

.*\\(\S*)-(\d*)\.jar

这应该可以胜任。