Как удалить повторяющиеся символы, например, букву 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"));