|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Замена текста между двумя подстроками-границами, регулярные выражения в Perl |
|
Замена текста между двумя подстроками-границами, регулярные выражения в Perl
|
Пользователь Сообщения: 127 |
Профиль | Отправить PM | Цитировать нужно заменить зелёную строчку между 2мя тегами, причём полученную подстроку требуется пропустить через функцию, т.е. требуется не ручная подстановка
подстановка делается в файле, который считывается в переменную, т.е. получается многострочная строка. Цитата:
|
||
Отправлено: 15:48, 05-08-2014 |
Сообщения: 3651
|
Профиль | Сайт | Отправить PM | Цитировать Тишина, смотреть на codepad:
#!/usr/bin/perl $tag = 'div'; sub translit{ return "Kina ne budet, translit ne zavezli"; } $str = "beliberda\nbeliberda... <$tag>замени меня, трамвай!</$tag>\nhello\nlook: <$tag>еще один подлежащий\nзамене текст</$tag>"; print "Original: (multiline)\n$str\n\n"; $str =~ s/(<${tag}>)(.*?)(<\/${tag}>)/$1.translit($2).$3/egs; print "Result:\n$str\n"; Цитата:
|
|
------- Последний раз редактировалось Habetdin, 09-08-2014 в 16:45. Причина: пропавший бекслеш o.O Отправлено: 11:56, 08-08-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 127
|
Профиль | Отправить PM | Цитировать спасибо! а я уже в дебри полез, свой xml-парсер писать начал!
если вдруг кому пригодится, я делал транслит такой сам транслит sub translit { # tsrt no utf8; ($_)=@_[0]; s/ж/zh/g; s/Ж/ZH/g; s/ч/ch/g; s/Ч/CH/g; s/Ш/Sh/g; s/ш/sh/g; s/Щ/Sch/g; s/щ/sch/g; s/Я/YA/g; s/я/ya/g; s/Ю/YU/g; s/ю/yu/g; s/Ъ/``/g; s/ъ/``/g; s/Ь/J/g; s/ь/j/g; s/а/a/g; s/А/A/g; s/б/b/g; s/Б/B/g; s/в/v/g; s/В/V/g; s/г/g/g; s/Г/G/g; s/д/d/g; s/Д/D/g; s/е/e/g; s/Е/E/g; s/ё/e/g; s/Ё/E/g; s/з/z/g; s/З/Z/g; s/и/i/g; s/И/I/g; s/й/y/g; s/Й/Y/g; s/к/k/g; s/К/K/g; s/л/l/g; s/Л/L/g; s/м/m/g; s/М/M/g; s/н/n/g; s/Н/N/g; s/о/o/g; s/О/O/g; s/п/p/g; s/П/P/g; s/р/r/g; s/Р/R/g; s/с/s/g; s/С/S/g; s/т/t/g; s/Т/T/g; s/у/u/g; s/У/U/g; s/ф/f/g; s/Ф/F/g; s/х/h/g; s/Х/H/g; s/ц/c/g; s/Ц/C/g; s/ы/y/g; s/Ы/Y/g; s/э/e/g; s/Э/E/g; s/ /_/g; s/№/No/g; return $_; } # tsrt sub frendly_cyrrilic { # frendly_cyrrilic no utf8; ($_)=@_[0]; s/А/\200/g; s/Б/\201/g; s/В/\202/g; s/Г/\203/g; s/Д/\204/g; s/Е/\205/g; s/Ё/\360/g; s/Ж/\206/g; s/З/\207/g; s/И/\210/g; s/Й/\211/g; s/К/\212/g; s/Л/\213/g; s/М/\214/g; s/Н/\215/g; s/О/\216/g; s/П/\217/g; s/Р/\220/g; s/С/\221/g; s/Т/\222/g; s/У/\223/g; s/Ф/\224/g; s/Х/\225/g; s/Ц/\226/g; s/Ч/\227/g; s/Ш/\230/g; s/Щ/\231/g; s/Ъ/\232/g; s/Ы/\233/g; s/Ь/\234/g; s/Э/\235/g; s/Ю/\236/g; s/Я/\237/g; s/а/\240/g; s/б/\241/g; s/в/\242/g; s/г/\243/g; s/д/\244/g; s/е/\245/g; s/ё/\361/g; s/ж/\246/g; s/з/\247/g; s/и/\250/g; s/й/\251/g; s/к/\252/g; s/л/\253/g; s/м/\254/g; s/н/\255/g; s/о/\256/g; s/п/\257/g; s/р/\340/g; s/с/\341/g; s/т/\342/g; s/у/\343/g; s/ф/\344/g; s/х/\345/g; s/ц/\346/g; s/ч/\347/g; s/ш/\350/g; s/щ/\351/g; s/ъ/\352/g; s/ы/\353/g; s/ь/\354/g; s/э/\355/g; s/ю/\356/g; s/я/\357/g; return $_; } # frendly_cyrrilic |
Последний раз редактировалось Тишина, 11-08-2014 в 19:10. Отправлено: 18:59, 11-08-2014 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Замена текста между тегов | vano42 | Скриптовые языки администрирования Windows | 5 | 09-08-2012 13:19 | |
регулярные выражения | Ginger | Вебмастеру | 60 | 21-03-2012 01:11 | |
Разное - PHP - регулярные выражения: HELP | GoldenOrb | Программирование и базы данных | 10 | 08-09-2008 16:47 | |
PHP - регулярные выражения: HELP | GoldenOrb | Вебмастеру | 13 | 18-07-2008 16:05 | |
Регулярные выражения | est | Хочу все знать | 6 | 02-10-2002 14:17 |
|