3

私は自分のプロジェクトの bom (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html) を作成中です。私のプロジェクトには多くの依存関係があります... そこで、xml を生成する小さな ruby​​ スクリプトを作成しました。しかし、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

そして、私は私だけを返す正規表現を見つけようとしています

  • 休止状態-コモンズ-注釈
  • 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 に答える