|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Titov 2:5020/400 26 Jul 2002 16:43:33 To : Sergey V. Leschenko Subject : Re: А как сделать чтобы тек ст в [ ] не заменялся? -------------------------------------------------------------------------------- "Sergey V. Leschenko" <sm@adamant.net> сообщил/сообщила в новостях следующее: > > AT> Заменяю я, например, все слова > AT> $body =~ s/рубль/доллар/g; > AT> > AT> А как сделать так, чтобы во фрагменте текста, помещённом в квадратные скобки [ ] замена не производилась? > > $body =~ s/^([^\[]*?)рубль/$1доллар/g; > $body =~ s/(\][^\[]*?)рубль([^\[]*?\[)/$1доллар$2/g; > $body =~ s/рубль([^\]]*?)$/доллар$1/g; > > скобки [ ] не должны быть вложенные Спасибо, попробую, но конечно хотелось бы найти более элегантное решение проблемы. Это нужно для скрипта преобразующего транслит в кириллицу. Каждая латинская буква и комбинация из нескольких букв преобразуется в соответствующую русскую букву. Заключённое в скобках переводиться не будет. Может сразу вырезать, заключённое в скобках, остальное перевести, а содержимое скобок потом вернуть обратно на свои места. Или перекодировать перед переводом содержимое скобок в что-нибудь, потом перевести, а потом перекодировать назад. --- ifmail v.2.15dev5 * Origin: MTU-Intel ISP (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/9104247e427b.html, оценка из 5, голосов 10
|