2016-11-23 89 views
2

比方說,我有一個字符串:正則表達式替換,直到特定的字符在PHP

a) 'one4two2three1' 
b) 'one4two2three1four#five7' 

我想用空白空間(「」)來替換這些字符串的所有號碼 - 直到「#」字符

所以最終的輸出應該是:

a) 'onetwothree' 
b) 'onetwothreefour#five7' 

有沒有辦法用preg_replace()或任何其他正則表達式函數做到這一點?

我試圖避免「如果」與strpos()和SUBSTR(),並找到更有效的方式

回答

3

您可以使用PCRE動詞(*SKIP)(*F)匹配和丟棄部分後#

$repl = preg_replace('/#[^#]*$(*SKIP)(*F)|\d+/m', '', $str); 

RegEx Demo

#[^#]*$(*SKIP)(*F)將匹配和輸入#後跳轉部分,然後我們可以用空字符串替換所有數字。

+1

哇,這就是我一直在尋找!使用這個有什麼限制嗎? – user7201963

+0

因爲您使用PCRE(PHP)正則表達式,所以沒有限制。 – anubhava

+0

這是什麼意思'使用pcre regex'?我使用簡單的PHP(5.3到7.0) - 它會工作嗎?我希望我不需要任何擴展/插件/特殊情況... – user7201963