parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Просто не надо решать задачу "в лоб"...

Sumo 06.02.2010 07:54 / 06.02.2010 08:12

... а стоит посмотреть на свои выражения и понять, что есть схожие группы, которые примитивно отсекаются:
  $validSmiles[$.cool(true) $.cry(true) ... ]
  $str[^str.match[:([a-z]+):][gi]{^if($validSmiles.[$match.1]){<img src="/img/smiles/${match.1}.gif alt=":$match.1:" /> "}{:$match.1:}}]
Похожим способом можно выкусить и смайлики со "скобочками".

Не забудьте сделать так, чтобы хеш validSmiles инициализировался в классе один раз.

p.s. И обратите внимание, что ключ i включает проверку регистра, поэтому выражение "O_O|o_O|O_o|О_О|О_о|о_О|o_o|о_о" можно сильно упростить.

p.p.s. А еще стоит вообще отказаться от всего этого безумства со смаликами и оставить их в текстовом виде (без всяких идиотских :cool:) - именно в таком виде от них есть хоть какая-то польза ;-)
p.p.p.s. http://www.artlebedev.ru/kovodstvo/sections/135/