Автор Тема: Работа со строкой. Замена множества символов на один.  (Прочитано 4796 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hanapi

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinet.ru
Здравствуйте.

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

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

Заранее благодарен.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
echo  preg_replace("~((\\w)\\\\2+)~i", "\\\\2\\\\2", $str);
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
$str=~s/(\\w)\\1{2,}/$1$1/gi;
« Последнее редактирование: 15 Ноября 2004, 21:41:24 от Green Kakadu »
 в исканиях.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
And no religion too...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
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
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
hanapi
perl
но если ты глянешь пример Макса, то у нас в общем-то одно и тоже (я проглядел, что он ответил)
(\\w)\\1  - буквенный символ в скобках запоминается, и доступ к нему можно получить используя \\1 или $1
т.е. (\\w)\\1 - это два одинаковых символа, следующих подряд.
{2,} от двух и более совпадений
 в исканиях.

Оффлайн hanapi

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dinet.ru
Макс
Green Kakadu
сенкс, я понял. буду копаться в предложенной доке до тех пора, пока не пойму все остальные моменты, непонятные мне в приведенном регекспе ))

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28