2011-02-24 181 views
0

我需要一些幫助,我有一個替換模式:正則表達式替換模式 - PHP

/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is  

與功能:

preg_replace('/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is', '', $string); 

其替換爲 '' - 空字符串,並以99%的情況下工作很好,但是有一些工作不正常。

所以即

瓶(藍色,10升) - 將被取代,以瓶(藍色,代替瓶(藍色)

它看起來像右邊boundry {英寸上面的示例符號}被視爲要替換的字符串的一部分。有任何想法嗎?

歡呼

回答

0

似乎反向引用作品:$ {2}

所以即

preg_replace('/(?<!\S)(\b|\(|\[)(?:\d+\s*x\s*)?\d+(?:\.\d+)?\s*litres($|\s|\.|;|,|\)|\])/is', '${2}', $string); 

應該做的伎倆。

你認爲呢?