2016-05-18 63 views
-2

我有這樣的字符串=> BGCOS1> BGSNB1(190MB)_BGSNB1> BGDBH1(180MB)_BGDBH1。 我希望它像這樣=> BGCOS1> BGSNB1> BGDBH1使用preg_replace(替換「(190MB)_BGSNB1」)。爲了這個,我使用:使用preg替換

$A = preg_replace('/\(\d+\w+\)\_\w+/', '', $B); 

但它返回我這個值:BGCOS1> BGSNB1_BGSNB1> BGDBH1_BGDBH1 會是怎樣的精確公式來代替呢?

+1

我們只能猜測你想如何操作字符串。您需要準確解釋*您希望正則表達式的工作方式。 –

+0

我只是想從這個字符串中替換(190MB)_BGSNB1 BGSNB1(190MB)_BGSNB1 .... – sharvanaz

+0

@sharvanaz這就是你想要的*在這個特殊情況下*,但是你沒有說實際的*規則*是什麼。我已經在我的答案中猜出了它,它在這裏有效,但如果我的規則錯誤,它可能會在別的地方失敗。 – Mike

回答

0

因爲我正則表達式的能力都不是很強的,我會用preg_match_all(),而不是preg_replace()然後將結果爆一起回來:

$subject = "BGCOS1>BGSNB1(190MB)_BGSNB1>BGDBH1(180MB)_BGDBH1"; 
$pattern = '~(^|>)([A-Z0-9]+)~'; 
preg_match_all($pattern, $subject, $matches); 

if (isset($matches[2])) { 
    echo implode('>', $matches[2]); 
} 
else { 
    echo "Regex didn't match anything"; 
} 

這是假設你想匹配遵循要麼開始所有大寫字母數字字符該行或>。如果這不是你想要的,請在你的問題中澄清。