1

たとえば、ドット付きの数値データを含む文字列変数があります$x = "OP/1.1.2/DIR";。数値データの位置は、アプリケーション内で変更することにより、ユーザーの希望に応じて任意の状況で変更できます。また、スラッシュバーは他の文字で変更できます。ただし、点線の数値データは必須です。では、文字列から点線の数字データ(ここ1.1.2では)を抽出するにはどうすればよいですか?

4

1 に答える 1

5

正規表現を使用します:

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

壊す:

  • \d+1桁以上を探す
  • \.リテラルの10進.文字
  • \d+再び1つ以上の数字が続く
  • (...)*これは、このパターンの0回以上の出現に一致することを意味します
  • (?:...)これは、このグループの後方参照を作成しないようにエンジンに指示します(基本的に、参照を使用しないため、参照を作成しても意味がありません)

あなたはデータについて多くの情報を与えていないので、私は次の仮定をしました:

  • データには常に少なくとも1つの数字が含まれます
  • データには、ドットのない数字のみを含めることができます
  • データには複数桁の数字が含まれる場合があります
  • 数字自体には、任意の数のドット/数字のペアを含めることができます

これらの仮定のいずれかが正しくない場合は、正規表現を変更する必要があります。

使用例:

$x = "OP/1.1.2/DIR";

if (!preg_match('/(\d+(\.\d+)*)/', $x, $matches)) {
    // Could not find a matching number in the data - handle this appropriately
} else {
    var_dump($matches[1]); // string(5) "1.1.2"
}
于 2012-07-12T13:23:03.963 に答える