我需要一些幫助,我有一個字符串,它看起來像如下:使用正則表達式用1個下劃線替換所有正在進行的下劃線?
$p__________________________________________________________________________________________________________________________________________, &$s___________________________________________________________________________________________________________________________________________, &$k____________________________________________________________________________________________________________________________________________, &$nft_____________________________________________________________________________________________________________________________________________)
,並想知道如果我可以使用正則表達式來把它變成:
$p_, &$s_, &$k_, &$nft_)
這基本上是刪除所有(所以他們沒有特定的數量,但他們至少有1個)進行下劃線,並用1個下劃線替換它們。
我試過下面的模式,但沒有運氣:
preg_replace('#(\$[a-z]{1,3})[_]+#', '$1', $string);
PS:原因一的preg_replace(正則表達式)是較受歡迎的(雖然我知道它不是100%總是正確的),因爲它更精確,然後使用一個常規字符串替換函數。
謝謝,感謝所有幫助。
難道你真的想在正則表達式中這樣做?我認爲結合一些基本的PHP函數(explode(),while()或字符串操作函數)會更容易和更快。 – Mixxiphoid 2011-04-20 19:18:34
很多人擔心正則表達式,所以很少有基準:)實際上,除非你這樣做了幾百萬時間一次,你不可能注意到使用正則表達式函數會對性能產生影響,一個'preg_replace()'比其他字符串操作符的組合更容易編寫和解釋。 – glomad 2011-04-20 19:39:07