Forum Webscript.Ru

Программирование => Perl => Тема начата: DDHR от 06 Октября 2004, 15:49:54

Название: Регулярные выражения
Отправлено: DDHR от 06 Октября 2004, 15:49:54
Можно ли отследить в сообщении такую штуку:
у юзера в сообщении присутствуют такие теги: ... something [img="1"] [img="2"] [img="3"] some text [img="id"] ...

вот мне нужно чтобы регулярное выражение бы отследило зависимость, например, если встречаются два и более раз [img="...id..."] при этом их разделяют пробел(ы), то вся эта конструкция заменялась бы на такое:



(это как в моём примере, на самом деле цифры 1,2,3 - значения при img), если четыре таких тега соответствено на



Если такое возможно, то подскажите плз. как это сделать.
Спасибо.
Название: Регулярные выражения
Отправлено: NeoNox от 06 Октября 2004, 18:22:20
тоесть ты хочешь получить

а не something

some text [img="id"]
  ?
Название: Регулярные выражения
Отправлено: Phoinix от 06 Октября 2004, 20:42:21
DDHR
Кросспостить нехорошо...

одним, честно, не знаю, несколькими:

~s/([^\\]]{1})\\s{1}\\[/$1 \\\\~s/\\]\\s{1}\\[/\\> \\~s/\\]\\s{1}([^\\[]{1})/\\>\\<\\/p\\> $1/g
~s/img\\=\\"(\\d+)\\"/img src\\=\\"$1\\.jpg\\"/g

Думаю упростить можно... все в твоих руках...
Название: Регулярные выражения
Отправлено: arto от 06 Октября 2004, 22:26:50
s|((?:\\[img="(?:\\d+)"\\]\\s*?){3,})|

$1

|g
s|\\[img="(\\d+)"\\]\\s*?||g
Название: Регулярные выражения
Отправлено: DDHR от 07 Октября 2004, 11:52:39
Цитировать
NeoNox:


а не
something

some text [img="id"]


второе:
something

some text [img="id"]


Цитировать
Phoinix:
Кросспостить нехорошо...



Извините. Буду знать. Но мне показалось, что там ответа я уже не получу... Обычно, если я не получаю ответа на другой стороне, спрашиваю здесь. Кстати, а как тогда быть(на будущие...)? Самому, сейчас скажите додумываться =)? Или впредь спрашивать только в одном месте, а то я не знаю какая у вас политика на этот счёт между сайтами.
Название: Регулярные выражения
Отправлено: Phoinix от 07 Октября 2004, 13:39:24
DDHR

а если будет так:

... something [img="1"] [img="2"] [img="3"] some text [img="id"] something [img="1"] [img="2"] [img="3"] some text [img="id"] ...

Ты задаешь неправильно вопрос, а потом еще даешь неправильные наводки.

Тебе нужно обработать BB-код [img] по всему тексту... и если удут повторы этого кода подряд, обрамлять их тегами

, вопрос только обрамлять ли одиночный код?

Ответ впрочем дан...

только в решении arto он привязывается только к 3 и более повторам ({3,}), если одиночный тег то заменить этот код на "+", и кстати:

Цитировать
s|((?:\\[img="(?:\\d+)"\\]\\s*?){3,})|

$1

|g


? - лишний, будут искаться не менее и не более 3-х повторов...

[OFF]Политики никакой нет, просто когда два одинаковых вопроса в разных форумах, непонятно на какой из них отвечать... В итоге ты можешь получить два неполноценных ответа вместо одного[/OFF]