2014-01-13 78 views
0

我想使用正則表達式來查找以A開頭並以B結尾並刪除A和B的子字符串。php正則表達式的子字符串以A開頭,以B結尾以便刪除A和B

例如將xxxxAmmmm(andMoreContentHere)Bvv更改爲

xxxxmmmm(and something more)vv

這就是我想出的'/(A([^B]*)B)/i';

但使用preg_replace('/(A([^B]*)B)/i', '', $string)會給我xxxxvv,除非我指定mmmm(andMoreContentHere),但(andMoreContentHere)是用戶生成的內容。那麼我應該怎麼做才能刪除A和B?

回答

2

這是你想要的嗎?

$str = 'xxxxAmmmm(andMoreContentHere)Bvv'; 
$str = preg_replace('/(A([^B]*)B)/', '\2', $str); 

回聲的

xxxxmmmm(andMoreContentHere)vv 
+0

謝謝!非常神奇!它是如何工作的? –

+1

\ 2反向引用第二個paranthesis並將其用作替換值。 –

+2

要小心這個「我」選項......它會使你的正則表達式不區分大小寫,如果你期待大寫字母「A」和「B」,那就擺脫那個「我」選項。 –

3

這是你在找什麼?

$test = 'xxxxAmmmm(andMoreContentHere)Bvv'; 
$regex = '/A([^B]+)B/i'; 

echo preg_replace($regex, '$1', $test); 

輸出:

xxxxmmmm(andMoreContentHere)vv 
+0

謝謝!這是我正在尋找的! –

相關問題