2012-05-26 67 views
1

我無法找到如何解決以下問題:PHP - 正則表達式刪除一個字符太多

preg_replace("/e[^t]/", "", "testet"); 

這應切出只是「E」,但它會刪除「上課」。我怎樣才能做到這一點,它只會刪除第一個e(並將第二個e'離開)?

謝謝!

+0

你想要什麼字符串? 'teetet'或'testet'? –

回答

5

負向前看符號:

preg_replace("/e(?!t)/", "", "testet") 

正如所解釋的here向前看符號不捕獲字符(消耗字符),如果這場比賽將是有效的,他們只斷言。

1
preg_replace("/e([^t])/", "$1", "testet"); 
-3

讓它非貪婪

preg_replace("/e[^t]/u", "", "testet"); 
+2

問題與貪婪無關,因爲模式中沒有通配符。 – lanzz

1

嘗試代替/e[^t]//e(?!t)/(負向前看符號)