2016-04-25 6 views
-5

私は、現在のアプリケーションのバージョンのリスト持っているから、長い検索: [ ヌル、 "0.2.1-RELEASE"、 "0.2.2-RELEASE"、 "0.3.0-SNAPSHOT" を、 「0.4.1-RELEASE」、 「0.4.2-RELEASE」 バージョン文字列

これらはDB内の文字列です。

が、私は "0.4.1-RELEASE" と "0.4.2-RELEASE" から0.2.1-RELEASE 0.4から0.2のようなものを文字列 から長い取得するためのJavaマッチ正規表現を使用したい

誰もが知っていますどうやって?

+2

'0.2'は長くはない正規表現を練習するhttp://regexr.com/3d9ujを確認してください。あなたは 'ダブル'を意味しますか? –

+0

あなたが書くことができる最も簡単な抽出正規表現、私は本当に正規表現を書く方法を学びに行くことをお勧めします。 – djechlin

+2

@AndyTurner実際には浮動小数点でもありません。 *本当に*パーサーが利用可能なMavenバージョンです。 – chrylis

答えて

0

まあそれは長くありません。文字列としてそれを抽出し、それをのdoubleに解析することができます。

Pattern p = Pattern.compile(("(\\d\\.\\d)")); 
    Matcher m = p.matcher("0.1.0.2 RELEASE"); 
    if (m.find()){ 
     System.out.println(Double.parseDouble(m.group(0))); 
    } 

PS:

+0

ありがとうございます。しかし、バージョン文字列が "12.12.00"の場合、コードは2.1を返すので、私は12.12を返します。 :) – Weever

+0

Whooops - 私の悪い:パターンは:\\ d + \\。\\ d +(バージョン番号の最初の部分のみがマッチしていることに注意してください - バージョン1.12は1.2よりも低く扱われます - 間違っています - 別のバージョンナンバリングを比較するための倍数よりもデータ構造) – CBudtz

関連する問題