我正在嘗試編寫一個函數來刪除字符串中連續的重複單詞。正則表達式找到的任何匹配都是至關重要的。換句話說...刪除字符串中的連續重複單詞
一個非常非常非常髒狗
應該成爲...
一個非常骯髒的狗
我有一個正則表達式這似乎工作得很好(based on this post)
(\b\S+\b)(($|\s+)\1)+
但是,我不知道如何使用preg_replace(或者如果有更好的功能)來實現這一點。現在我已經刪除了所有匹配的重複單詞,而不留下單詞的完整副本。我可以解析變量或特殊指令來保持匹配嗎?
我有這個目前...
$string=preg_replace('/(\b\S+\b)(($|\s+)\1)+/', '', $string);
請注意,在交替中使用'$'是沒有意義的,因爲'$ \ 1'永遠不會匹配(您甚至不使用多行修飾符 –