2016-10-27 10 views
1

を否定するこれは私が否定したい私のパターンです:にpreg_replace、正規表現パターン

[\+\-][0-9\.]+ 

これらのサンプル行です:、私は数字以外のすべてを削除したい

Stephane Robert (+1.5 Sets) 
Stephane Robert (-1.5 Sets) 
Philipp Kohlschreiber 
Philipp Kohlschreiber (-1.5 Sets) 
Philipp Kohlschreiber (+1.5 Sets) 
Player Names (n) 
Another Player-Player 

パターンに一致します、つまり、正または負の浮動小数点数だけを必要とします。

+1.5 
-1.5 
-1.5 
+1.5 

私はphpとpreg_replaceを使用しています。

ありがとうございます!

答えて

0

これは使用できます。これにより、目的の値を持たない他の行も削除されます。

(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*) 

Explanation

PHPコードサンプル

$re = '/(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*)/m'; 
    $str = 'Stephane Robert (+1.5 Sets) 
    Stephane Robert (-1.5 Sets) 
    Philipp Kohlschreiber 
    Philipp Kohlschreiber (-1.5 Sets) 
    Philipp Kohlschreiber (+1.5 Sets) 
    Player Names (n) 
    Another Player-Player'; 
    $subst = '\\1'; 

    $result = preg_replace($re, $subst, $str); 

    echo $result; 
+0

なぜdownvotedですか?答えを高める理由を知りたい –

1

パターンに一致する文字列を検索する場合は、preg_replace()の代わりにpreg_match()を使用してください。

+3

これはコメントでなければなりません。 – Toto

+1

そして、 'preg_match'は抽出する値が複数あるのでジョブを実行しません。 –

+0

便利なバージョンです、ありがとうございますが、何らかの理由でpreg_replaceを使用する必要があります。 – NTsvetkov