2016-10-27 2 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

이것을 사용할 수 있습니다. 이렇게하면 원하는 값을 갖지 않는 다른 행도 제거됩니다.

Explanation

(?=.*[+-]\d+\.\d+).*([+-]\d+\.\d+).*|(.*) 
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