-1

この正規表現は正しい文字列を見つけますが、最初の結果のみを返します。残りのテキストを検索するにはどうすればよいですか?

$text =",415.2109,520.33970,495.274100,482.3238,741.5634
655.3444,488.29980,741.5634";

preg_match("/[^,]+[\d+][.?][\d+]*/",$text,$data);

echo $data;

フォローアップ: 私はこのスクリプトの当初の期待を推し進めており、より詳細なデータを引き出しているところまで来ています。これで何時間も無駄にしました...誰か光を当てることができますか? ここに私の文字列があります:

155.101.153.123:simple:mass_mid:[479.0807,99.011, 100.876],mass_tol:[30],mass_mode:  [1],adducts:[M+CH3OH+H],
130.216.138.250:simple:mass_mid:[290.13465,222.34566],mass_tol:[30],mass_mode:[1],adducts:[M+Na],

ここに私の正規表現があります: "/mass_mid:[((?:\d+)(?:.)(?:\d+)(?:,)*)/"

私は本当にこれに頭をぶつけています!結果から行mass_mid:[を除外し、カンマ区切りの値を保持する方法を教えてもらえますか?

4

3 に答える 3

2

正規表現を使用しないでください。splitコンマで入力を分割するために使用します。

正規表現は、たまたま文字列が関係するすべての問題に手を振る魔法の杖ではありません。

于 2013-06-14T19:58:25.753 に答える
2

preg_match_allではなく使用preg_match

PHPマニュアルから:

(`preg_match_all`) searches subject for all matches to the regular expression given in pattern and puts them in matches in the order specified by flags.

After the first match is found, the subsequent searches are continued on from end of the last match.

http://php.net/manual/en/function.preg-match-all.php

于 2013-06-14T18:40:53.417 に答える
0

説明

単一の小数点を含む可能性のある数値のリストを抽出するには、この正規表現を使用できます

\d*\.?\d+

ここに画像の説明を入力

PHP コード例:

<?php
$sourcestring=",415.2109,520.33970,495.274100,482.3238,741.5634
655.3444,488.29980,741.5634";
preg_match_all('/\d*\.?\d+/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>

マッチを生成する

$matches Array:
(
    [0] => Array
        (
            [0] => 415.2109
            [1] => 520.33970
            [2] => 495.274100
            [3] => 482.3238
            [4] => 741.5634
            [5] => 655.3444
            [6] => 488.29980
            [7] => 741.5634
        )

)
于 2013-06-15T05:06:59.683 に答える