вопрос по regex
От: Аноним  
Дата: 24.07.08 12:22
Оценка:
Есть задача заменить определнный тэги на графичиские смайлы.
Вроде проблем не возникло кроме одной.
Как правильно записать вырожение.

допустим есть два смайла ":)" и ":("
мне нужно как то записать
что я ищу все слова вида ":)" и ":(" с произвольным количеством whitespace characters вначале и в конце.
сейчас вот так ":)|:(" что реагирует, например, на "abc:)af" что мне не нужно.


если что то типа вот так "[ \t\r\n\v\f]*:)", то оно всегда ждет whitespace characters, а мне нужно либо точное вхождение ":)" либо с указанными символами до и после. Есть ли возможность это указать?
спасибо.

Просьба модератору не переносить топик, так как срочно и я потом сам не найду.
Re: вопрос по regex
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.07.08 12:28
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Просьба модератору не переносить топик, так как срочно и я потом сам не найду.


Переносить я ничего не буду, потому что топик вполне по теме форума. Но на будущее — твои проблемы что тебе надо срочно и ты не найдешь никоим разом не являются оправданием неверного выбора форума. Найти же свои сообщения, в том числе и в мусорке, очень просто — достаточно зайти в собственный профиль и выбрать ссылку с количеством написанных сообщений.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re: вопрос по regex
От: _FRED_ Черногория
Дата: 24.07.08 13:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>допустим есть два смайла "" и ""

А>мне нужно как то записать
А>что я ищу все слова вида "" и "" с произвольным количеством whitespace characters вначале и в конце.

Количество "произвольным" означает, в том числе и 0, то есть отсутствие, что , как сказано далее:

А>сейчас вот так "|" что реагирует, например, на "abcaf" что мне не нужно.


"не нужно". Видимо, требуется один или несколько. Тогда вместо астерикса (звёздочки) нужен плюс:
(?<=^|\s+?)(\:\)|\:\()(?=\s+?|$)

То есть, ищем смайлы
…(\:\)|\:\()…

которые идут после либо начала строки\текста либо одного или нескольких пробельных символов:
(?<=^|\s+?)(\:\)|\:\()…

и после которых один или несколько пробельных символов или конец строки\текста:
(?<=^|\s+?)(\:\)|\:\()(?=\s+?|$)
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.