Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: hanapi от 14 Ноября 2004, 22:50:36

Название: Работа со строкой. Замена множества символов на один.
Отправлено: hanapi от 14 Ноября 2004, 22:50:36
Здравствуйте.

Возник вопрос по регулярным выражениям.
Имеется строка:
$str = "tttteeEeeeeeeeesssssssssssssstttttttttttt";
необходимо превратить эту строку в
$str = "tteesstt";
т.е. надо удалить все повторяющиеся более двух раз символы. Регулярные выражени не очень хорошо знаю, поэтому, собственно, и возник этот вопрос - какое выражения необходимо задать eregi_replace, для того чтобы получить необходимый результат?

Прошо особо не пинать, сам понимаю что вопрос детский, но, повторюсь, в регах я не силен.. Прочитал кучу доки, но так и не понял что именно нужно сделать...

Заранее благодарен.
Название: Работа со строкой. Замена множества символов на один.
Отправлено: Макс от 15 Ноября 2004, 15:41:33
echo  preg_replace("~((\\w)\\\\2+)~i", "\\\\2\\\\2", $str);
Название: Работа со строкой. Замена множества символов на один.
Отправлено: Green Kakadu от 15 Ноября 2004, 15:42:21
$str=~s/(\\w)\\1{2,}/$1$1/gi;
Название: Работа со строкой. Замена множества символов на один.
Отправлено: commander от 15 Ноября 2004, 17:04:35
RomikChef
http://forums.webscript.ru/showthread.php?s=&postid=114330#post114330
Название: Работа со строкой. Замена множества символов на один.
Отправлено: Макс от 15 Ноября 2004, 17:40:55
preg_replace("~((\\w)\\\\2+)~i", "\\\\2\\\\2", $str);

(\\w) запоминает один символ в \\\\2 (двойка - потому что это вторая пара скобок). Тогда
(\\w)\\\\2 - это 2 одинаковых символа подряд (например "nn");
(\\w)\\\\2+ - это более двух одинаковых символов подряд

статьи по регекспам ищи через http://forums.webscript.ru/showthread.php?s=&threadid=15810&msgnum=5
Название: Работа со строкой. Замена множества символов на один.
Отправлено: Green Kakadu от 15 Ноября 2004, 17:44:50
hanapi
perl
но если ты глянешь пример Макса, то у нас в общем-то одно и тоже (я проглядел, что он ответил)
(\\w)\\1  - буквенный символ в скобках запоминается, и доступ к нему можно получить используя \\1 или $1
т.е. (\\w)\\1 - это два одинаковых символа, следующих подряд.
{2,} от двух и более совпадений
Название: Работа со строкой. Замена множества символов на один.
Отправлено: hanapi от 15 Ноября 2004, 18:31:12
Макс
Green Kakadu
сенкс, я понял. буду копаться в предложенной доке до тех пора, пока не пойму все остальные моменты, непонятные мне в приведенном регекспе ))