Удалить повторяющийся символ

Как удалить повторяющиеся символы, например, букву k в cakkkke чтобы это было cake с использованием регулярного выражения?

Использовать backrefrences

 echo preg_replace("/(.)\\1+/", "$1", "cakkke"); 

Вывод:

 cake 

Объяснение:

(.) захватывает любой символ

\\1 – это обратная ссылка на первую группу захвата. . выше в этом случае.

+ делает спину обратной связи по крайней мере 1 (так, чтобы она соответствовала aa, aaa, aaaa, но не a)

Заменяя его на $1 в этом случае заменяется полным совпадающим текстом kkk с первой группой захвата k в этом случае.

Вы хотите сначала совместить символ, а затем повторить этот символ: (.)\1+ . Замените его первым символом. Скобки создают обратную ссылку на первый символ, который вы используете как для повторения экземпляров, так и для замены текста.

 preg_replace('/(.)\1+/', '$1', $str); 

Используйте это регулярное выражение "(.)\\1+" и замените его на $1 .

Не знаю php, но в C #:

 Console.WriteLine(Regex.Replace("cakkkkeee", "(.)\\1+", "$1"));