3

次のコードを使用して、文字列からバージョン番号を抽出しています。バージョン番号は、数字とドットのみで行われる最初の一致です。たとえば、文字列: "GT-I9000M-user 2.25.31 FROYO UGKC1 release-keys"の場合、一致は次のようになります。 "2.25.31"文字列の別の例: "1.24.661.1hbootpreupdate:13DelCache:1"一致は次のようになります。 :「1.24.661.1」。

私の現在のコードは次のとおりです。

if (preg_match('/[\d]+[\.][\d]+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

このコードは、すべてではなく一部のケースにのみ適合します。たとえば、最初の例では、「2.25.31」ではなく「2.25」のみが返されます。2番目の例では、「1.24.661.1」ではなく「1.24」が返されます。

私はRegExを初めて使用するので、それを理解するのに苦労しています。

ご協力いただきありがとうございます。

4

3 に答える 3

11
if (preg_match('/\d+(?:\.\d+)+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

.xを繰り返すことを許可し、それが機能するはずです。

于 2011-08-29T19:05:49.087 に答える
2

これを試してください:

'/\d+(\.\d+)+/'

あなたとの違いは、.\d+パーツを繰り返すことができるため、複数のドットが可能になることです。

于 2011-08-29T19:06:42.050 に答える
0

ソフトウェアのバージョン番号を1つ/なし/複数のドットと一致させるには、次を使用できます。

\d+(?:\.*\d*)*

(この投稿の前に著者にkudos)

于 2012-06-22T08:51:28.460 に答える