Forum Webscript.Ru
Программирование => Регулярные выражения => Тема начата: hanapi от 14 Ноября 2004, 22:50:36
-
Здравствуйте.
Возник вопрос по регулярным выражениям.
Имеется строка:
$str = "tttteeEeeeeeeeesssssssssssssstttttttttttt";
необходимо превратить эту строку в
$str = "tteesstt";
т.е. надо удалить все повторяющиеся более двух раз символы. Регулярные выражени не очень хорошо знаю, поэтому, собственно, и возник этот вопрос - какое выражения необходимо задать eregi_replace, для того чтобы получить необходимый результат?
Прошо особо не пинать, сам понимаю что вопрос детский, но, повторюсь, в регах я не силен.. Прочитал кучу доки, но так и не понял что именно нужно сделать...
Заранее благодарен.
-
echo preg_replace("~((\\w)\\\\2+)~i", "\\\\2\\\\2", $str);
-
$str=~s/(\\w)\\1{2,}/$1$1/gi;
-
RomikChef
http://forums.webscript.ru/showthread.php?s=&postid=114330#post114330
-
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
-
hanapi
perl
но если ты глянешь пример Макса, то у нас в общем-то одно и тоже (я проглядел, что он ответил)
(\\w)\\1 - буквенный символ в скобках запоминается, и доступ к нему можно получить используя \\1 или $1
т.е. (\\w)\\1 - это два одинаковых символа, следующих подряд.
{2,} от двух и более совпадений
-
Макс
Green Kakadu
сенкс, я понял. буду копаться в предложенной доке до тех пора, пока не пойму все остальные моменты, непонятные мне в приведенном регекспе ))