2016-10-27 11 views
1

Das ist mein Muster ist, das ich negieren wollen:preg_replace, negieren RegexMuster

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

Dies sind Beispielzeilen:

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 

Ich möchte alle, aber die Zahlen abzustreifen, das Pattern-Matching, dh ich will nur die positive oder negative float-nummer.

+1.5 
-1.5 
-1.5 
+1.5 

Ich benutze PHP und Preg_replace.

Danke!

Antwort

0

Sie können dies verwenden. Dies wird auch andere Linien entfernen, die nicht den gewünschten Wert haben.

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

Explanation

PHP-Code Probe

$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

Warum abgelehnt? möchte den Grund wissen, um die Antwort zu verbessern –

1

Wenn Sie Strings finden möchten, die zu Ihrem Muster passen, verwenden Sie einfach preg_match() anstelle von preg_replace().

+3

Dies sollte ein Kommentar sein. – Toto

+1

Und 'preg_match' wird den Job nicht ausführen, da mehrere Werte extrahiert werden müssen. –

+0

Nützliche Version, danke, aber ich muss preg_replace aus irgendeinem Grund verwenden. – NTsvetkov