Создание серверных приложений на языке PERL


Regular expressions (регулярные выражения) - часть 2


Под Windows это делается так:

use locale;

use POSIX qw (locale_h);

setlocale(LC_CTYPE, "Russian_Russia.1251"); # или "Russian_Russia.866"

С трансляцией АКА tr/XX/xx/ даже не используя use locale; можно так сделать: tr/\xB3\xE0-\xFF/\xA3\xC0-\xDF/;# для KOI8-r или tr/\xA8\xC0-\xDF/\xB8\xE0-\xFF/;# для Windows-1251 или tr/\xF0\x80-\x9F/\xF1\xA0-\xAF\xE0-\xEF/;# для CP-866



Q: Кто-нибудьможет мне по-русски рассказать о операорах: ?:, ?!, ?= и т.д.

и когда они используются?


A:

(?attern) - это почти (pattern). В норме круглые скобки выполняют

одновременно две функции - группируют то, что у них внутри, чтобы можно было

использовать повторители (*,?, +), и сохраняют то, что там получилось, в

переменных $1, $2,.. (?attern) выполняет только первую функцию, не

трогая, таким образом, значения переменных $1, $2,... Что несколько ускоряет

работу (пропорционально количеству откатов, проходящихчерез границу

выбранной группы) и уменьшает количество переменных. (?=pattern) -заглядвперед. Отличается от просто pattern тем, что после

успешного нахождения соответствияпозиция в строке будет не после

соответствующего куска, а перед ним. (?!pattern) - отрицательный загляд вперед. Отличается от предыдущего тем, что

pattern найтись HЕ должен. Вторыеоба наиболее осмысленны, когда привязаны к чему-нибудь (^, \G, просто

предшествующему шаблону). Hо в некоторых ситуациях осмысленны и сами по себе. В perl 5.005появились различные нововведения, о которых подробнее можно

узнать в документации:?<=, ?<!, ?{code}, ?>,

?(condition)yes-pattern|no-pattern





Начало  Назад  Вперед