Автор Тема: Поиск и замена  (Прочитано 3023 раз)

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

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск и замена
« : 10 Апреля 2003, 10:35:38 »
Есть текст, в котором я ищу подстроки (их много), есть список. Как наиболее быстро, заменить найденные подстроки на определенные элементы из списка, элементы определяются в зависимости от вида найденной подстроки.
Сам шаблон:m||
То что будет находится между :type=TYPE1¶m=1¶m=2¶m=3
type - один из двух списков,params - значение в списке.
Заранее благодарю!

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Поиск и замена
« Ответ #1 : 10 Апреля 2003, 22:09:28 »
Ээээ....а для тупых пример можно?
2B OR NOT 2B = FF

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск и замена
« Ответ #2 : 10 Апреля 2003, 23:33:33 »
Не очень корректно вопрос поставил.....
Есть HTML, в нем содержится что-то на подобие SSI вставок.
Мне необходимо найти эти вставки, разобрать их содержимое и заменить на данные из списка, в зависимости от параметров.
Дело в том, что этих вставок может быть очень много + элементы списка не должны повторяться в HTML (после замены).
Например
 <html text...><!type=1&param=2&param1=3!><html text...><!type=2&param=2&param1=3!><html text...><!type=1&param=2&param1=3!><html text...> и т.д.
type номер списка (1 или 2)
param1 значение элемента[i][0]
param2 значение элемента[i][1]

Вот в зависимости от значений param1 и param2 нужно в списке выбрать элемент (не вставленный выше в HTML)

Оффлайн NCRangeR

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.mephix.h1.ru
Поиск и замена
« Ответ #3 : 11 Апреля 2003, 06:36:25 »
если я правильно понял, количество param-ов фиксировано (а именно, их три - type, param и param1) для каждой вставки..

тогда что-то вроде
$c =~ s//Func($1,$2,$3)/ge;

ну а в функции Func определяется код вставки в зависимости от параметров..
- How does the CPAN work?
 - With dark magic, evil-looking sacrificial knives and scantily clad virgins under pale moonlight.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Поиск и замена
« Ответ #4 : 11 Апреля 2003, 08:32:12 »
Цитировать

если я правильно понял, количество param-ов фиксировано (а именно, их три - type, param и param1) для каждой вставки..

Нет, количество параметров не фиксировано, их может быть от одного, до 6....

Оффлайн NCRangeR

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 42
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.mephix.h1.ru
Поиск и замена
« Ответ #5 : 11 Апреля 2003, 23:10:08 »
C++
тогда лучше так:
$c =~ s//Func($1,$2)/ge;
в функцию func таким образом передадутся номер type (т.е 1 или 2) и переменная-список $p="param=1¶m=2¶m=5..."

@params = split /&/, $p;

всё, есть список нужных параметров в виде
@params=("param=1", "param=2", "param=5")..
- How does the CPAN work?
 - With dark magic, evil-looking sacrificial knives and scantily clad virgins under pale moonlight.

 

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