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