Замена текста между двумя подстроками-границами, регулярные выражения в Perl
нужно заменить зелёную строчку между 2мя тегами, причём полученную подстроку требуется пропустить через функцию, т.е. требуется не ручная подстановка
подстановка делается в файле, который считывается в переменную, т.е. получается многострочная строка.
Цитата:
тэг задаётся переменной $tag
исходная строка: 'sdzxcasdzxc <$tag> замени меня!!! </$tag> sdfsdfsdfsdf <$tag> и тут тоже!</$tag> sdfsdfsdfsdf'
функция транслита (уже есть) translit()
конечная строка : 'sdzxcasdzxc <$tag> zameni mena!!! </$tag> sdfsdfsdfsdf <$tag> i tut toje!</$tag> sdfsdfsdfsdf'
|
желательно регулярными выражениями.
|
Тишина, смотреть на 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";
Цитата:
Original: (multiline)
beliberda
beliberda... <div>замени меня, трамвай!</div>
hello
look: <div>еще один подлежащий
замене текст</div>
Result:
beliberda
beliberda... <div>Kina ne budet, translit ne zavezli</div>
hello
look: <div>Kina ne budet, translit ne zavezli</div>
|
|
спасибо! а я уже в дебри полез, свой 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
вывод кириллицы для виндовой консольки (под win работаю)
Код:
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
|
Время: 23:21.
© OSzone.net 2001-