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