Подскажите регулярное выражение для удаления повторяющихся символов

K
На сайте с 12.07.2006
Offline
295
Kpd
5206

Кто силен в регулярных выражениях, подскажите правило для удаления любых символов, которые повторяются более 2 раз. Т.е. чтобы вместо "Прииииииивеееет!!!!!!" было "Привет!".

Как решить задачу перебором символов придумал, но хочется более изящный способ.

M
На сайте с 21.07.2005
Offline
70
#1

Скорее уж "Приивеет" получится

Тут без словарика, наверно, ничего путного не выйдет

K
На сайте с 12.07.2006
Offline
295
Kpd
#2
Mitos:
Скорее уж "Приивеет" получится

Да, при простом переборе двойные повторы остаются, тоже не совсем хорошо.

Mitos:
Тут без словарика, наверно, ничего путного не выйдет

Не самое простое решение :)

M
На сайте с 21.07.2005
Offline
70
#3

не просто , но ведь анализом букв не отличишь "бреет" от "привеет" , ИМХО (хотя, может Гуру чего путного придумают\подскажут)

K
На сайте с 12.07.2006
Offline
295
Kpd
#4
Mitos:
не просто , но ведь анализом букв не отличишь "бреет" от "привеет" , ИМХО (хотя, может Гуру чего путного придумают\подскажут)

В русском языке очень немного слов с тройными повторяющимися буквами (ничего кроме "длинношеее" не помню), поэтому ищу в тексте тройные повторы.

tommy-gung
На сайте с 22.11.2006
Offline
304
#5
Kpd:
ничего кроме "длинношеее" не помню

[off]змееед[/off] :)

.

Здесь не могла быть ваша реклама
-
На сайте с 08.04.2007
Offline
16
#6

Если не учитывать, что и в нормальных словах бывает по несколько повторяющихся букв, то вот так для php:

preg_replace("'[a-zA-Zа-яА-Я]+'", "\\1", $str);
• random.name • (http://random.name)
K
На сайте с 12.07.2006
Offline
295
Kpd
#7
-Nou-:
что и в нормальных словах бывает по несколько повторяющихся букв

К сожалению. таких слов много.

Подойдем к проблеме с другой стороны. Вот как я её решаю "в лоб"

function del_rep ($str)

{
$s = preg_split ("##", $str);
$c = count($s);
$str = $s[1].$s[2];
for ($i = 3; $i < $c; $i++)
{
if (!($s[$i-2] == $s[$i-1] && $s[$i-1] == $s[$i] && !is_numeric($s[$i])))
$str .= $s[$i];
}
return $str;
}

За счет чего здесь можно уменьшить время выполнения (в т.ч. на текстах > 10000 символов)?

serg mossine
На сайте с 03.07.2002
Offline
114
#8

кешированием страницы

Уважаемые участники! Если у вас вскочил чирей на жопе, либо нужно купить ноутбук, часы, трусы, выбрать ресторан и т.д., не стоит искать ответа здесь, попробуйте предварительно найти профильный ресурс. Поверьте, он есть. Задолбали. Орфографию, как и искусство кун-фу, настоящие мастера применяют лишь в исключительных ситуациях.
K
На сайте с 12.07.2006
Offline
295
Kpd
#9
serg mossine:
кешированием страницы

Не понял, о чем идет речь?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий