Автор Тема: Регулярные выражения  (Прочитано 4289 раз)

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

Оффлайн DDHR

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://hopper.ru
Регулярные выражения
« : 06 Октября 2004, 15:49:54 »
Можно ли отследить в сообщении такую штуку:
у юзера в сообщении присутствуют такие теги: ... something [img="1"] [img="2"] [img="3"] some text [img="id"] ...

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

<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"></p>

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

<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"><img src="4.jpg"></p>

Если такое возможно, то подскажите плз. как это сделать.
Спасибо.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Регулярные выражения
« Ответ #1 : 06 Октября 2004, 18:22:20 »
тоесть ты хочешь получить
<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"></p> а не something <p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"></p>some text [img="id"]
 
?
The documentations is your friend

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Регулярные выражения
« Ответ #2 : 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

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Регулярные выражения
« Ответ #3 : 06 Октября 2004, 22:26:50 »
s|((?:\\[img="(?:\\d+)"\\]\\s*?){3,})|

$1

|g
s|\\[img="(\\d+)"\\]\\s*?||g

Оффлайн DDHR

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://hopper.ru
Регулярные выражения
« Ответ #4 : 07 Октября 2004, 11:52:39 »
Цитировать
NeoNox:


а не
something

some text [img="id"]


второе:
something 
<p><img src="1.jpg"><img src="2.jpg"><img src="3.jpg"></p>some text [img="id"]



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



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

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Регулярные выражения
« Ответ #5 : 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]

 

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