3

我正在为我的项目创建一个 bom (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)。我的项目有很多依赖项......所以我创建了一个小红宝石脚本,它会为我生成 xml。但是当涉及到决定 artifactId 的正则表达式时,我做得不够好。假设我有以下 3 条路径:

  • /Users/buddy/Downloads/jboss-esb/client/hibernate-commons-annotations.jar
  • /Users/buddy/Downloads/jboss-esb/client/ejb3-persistence.jar
  • /Users/buddy/Downloads/jboss-esb/server/default/deploy/spring.esb/spring-core-3.0.6.RELEASE.jar

我正在尝试找到一个正则表达式,它只会返回我

  • hibernate-commons-注解
  • ejb3-持久性
  • 弹簧芯

前面提到的路径在变量文件名中,我有这个正则表达式来确定版本和 artifactId(显然我有一些默认版本,以防文件名中没有版本)

@version = version
if temp_version = filename[/-([\d+{1,3}\.A-Z]+).jar/,1]
  @version = temp_version
end
@artifactId = filename[/.*\/([\w\d]+\-?[^\d^\-]*)\-?[\d+\.A-Z]*.jar/,1]

但它不会在所有情况下都有效。

任何帮助使正则表达式在所有情况下都能正常工作,并且非常感谢简化版本的正则表达式。

4

1 回答 1

0

这个正则表达式有效

.+\/(.+?)(-\d|.jar)

在此处进行测试,在组(第一个,可通过 访问$1)中查找您要查找的字符串。

编辑:

我假设任何版本都是文件名的一部分,并以减号和数字开头,因此如果正则表达式找到-3 -0,文件字符串将终止,依此类推。

于 2012-10-03T10:53:14.507 回答