2016-10-27 3 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_match() вместо preg_replace().

+3

Это должно быть комментарий. – Toto

+1

И 'preg_match' не будет выполнять задание, так как есть несколько значений для извлечения. –

+0

Полезная версия, спасибо, но по какой-то причине мне нужно использовать preg_replace. – NTsvetkov

Смежные вопросы