Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обойти абзац 
V
    Опции темы
gcc
Дата 17.9.2010, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



есть регулярнео выражение для замены, точнее для обработки картинок:
Код
$text =~ s#<v:imagedata src="(.*.)" (.*.)\/>#--><img src="$1" alt="" \/><!--#ig;


есть участок текста, где данное рег. выр. не работает, по причине что стоит абзац...!!
Код
   <v:imagedata src="./RGDMETMP1.files/image011.jpg" o:title="" gain="1.5625"
    blacklevel="-5898f"/>


тут есть много текста, по этому просто удалить обзац не получится...!

как тут написать это рег.выр. чтобы была замена, как обойти обзац (перенос строки) ??

я пробовал так: 
Код
$text =~ s#<v:imagedata src="(.*.)" (.*.)\/>#--><img src="$1" alt="" \/><!--#gsxie;


но отвичет:
Код
/per.pl > 11
syntax error at ./per.pl line 30, near "-->"
Execution of ./per.pl aborted due to compilation errors.


что с этим делать я не понял...
PM WWW ICQ Skype GTalk Jabber   Вверх
ming
Дата 17.9.2010, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 1
Всего: 3



модификатор /e предписывает движку регэкспов выполнить код, указанный в кач-ве второго аргумента оператора s///
Но строка
Код

--><img src="$1" alt="" \/><!--

валидным perl-кодом не является, 
поэтому либо убирайте /e, либо заключайте в аргумент в кавычки
Код

"--><img src=\"" . $1 . "\" alt=\"\" \/><!--"


/x тоже лишний, т.к. рег выражение может быть записано в одну строку и без использования разделительных пробельных символов

В вашем случае нужно было всего лишь прибавить модификатор /s smile

PS:  Подозреваю, что (.*.)  можно заменить на (.+) ... или что это за конструкция такая? 

Это сообщение отредактировал(а) ming - 17.9.2010, 08:04
PM MAIL ICQ Jabber   Вверх
gcc
Дата 17.9.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



не со всем понял, что-то...

есть регулряное выражение:
Код

$text =~ s#<v:imagedata src="(.*.)" (.*.)\/>#--><img src="$1" alt="" \/><!--#ig;


для обработки участка в тексте:
Код

<v:imagedata src="./RGDMETMP1.files/image001.jpg" o:title=""/>


НО как только в тексте попадается такой участок:
Код

   <v:imagedata src="./RGDMETMP1.files/image007.jpg" o:title="" gain="79922f"
    blacklevel="-3932f"/>


то это рег.выр . не работает, не обрабатывает!! 
пробовал 100 раз, как я и написал в первом посте, оно почему-то не хочет обрабатывать там где обзац стоит!

как сделать, чтобы оно работало?? 

Это сообщение отредактировал(а) gcc - 17.9.2010, 14:29
PM WWW ICQ Skype GTalk Jabber   Вверх
ming
Дата 17.9.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 1
Всего: 3



Код

$text =~ s#<v:imagedata src="(.*.)" (.*.)\/>#--><img src="$1" alt="" \/><!--#igs;      # << модификатор s

PM MAIL ICQ Jabber   Вверх
gcc
Дата 17.9.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



ming, добавил модификатор s, теперь вообще не заменяет, не работает...
PM WWW ICQ Skype GTalk Jabber   Вверх
ming
Дата 17.9.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 1
Всего: 3



а всё, разобрался. тут виноваты жадные квантификаторы 
вот тут (src="(.*.)") захватывается не 
Код

./RGDMETMP1.files/image007.jpg  

как вы надеялись, а 
Код

./RGDMETMP1.files/image007.jpg" o:title="" gain="79922f"    blacklevel="-3932f


вот так у меня заработало ( .*  ->  .*? ):
Код

my $text = <<"TEXT";
<v:imagedata src="./RGDMETMP1.files/image001.jpg" o:title=""/>

<v:imagedata src="./RGDMETMP1.files/image007.jpg" o:title="" gain="79922f"
    blacklevel="-3932f"/>
TEXT

$text =~ s#<v:imagedata src="(.*?)" (.*?)\/>#--><img src="$1" alt="" \/><!--#igs;

print $text;



PM MAIL ICQ Jabber   Вверх
gcc
Дата 17.9.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



понятно, у меня как раз не давно такая же проблема была, я забыл что они не работают нормально..
PM WWW ICQ Skype GTalk Jabber   Вверх
Logo
Дата 17.9.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



Все работает нормально, разберитесь просто.
PM MAIL   Вверх
gcc
Дата 1.10.2010, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



подскажите, почему такое рег. выр.

Код

$text =~ s#<img width=(.*?) height=(.*?) src="(.*?\/)([a-z0-9\.]+)" (.*?)\/>#<img src="$patch_pic_site$rand_img-$4" alt="" \/>#igs;


не хочет работать для такого участка 
Код

<img width=236 height=149
  src="./RGDMETMP1.files/image010.jpg" align=left hspace=12 v:shapes="_x0000_s1049">

в тексте?




Это сообщение отредактировал(а) gcc - 2.10.2010, 08:31
PM WWW ICQ Skype GTalk Jabber   Вверх
Logo
Дата 1.10.2010, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 5
Всего: 10



В реге />, в тексте >. [a-z0-9\.]+ сдесь не разрешен обратый слеш, а в тексте он есть.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.