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

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

Ответы

Ответ 1

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

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

Вывод:

cake

Пояснение:

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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