Шаг 104.
Операции с регулярными выражениями. Операция замены

    На этом шаге мы рассмотрим операцию замены.

    s/PATTERN/REPLACEMENT/egimosx

    Операция замены s/PATTERN/REPLACEMENT/ осуществляет поиск образца PATTERN и, в случае успеха, замену найденного фрагмента текстом REPLACEMENT. Возвращаемым значением является число сделанных замен или пустая строка (ЛОЖЬ), если замен не было. По умолчанию поиск и замена осуществляются в специальной переменной $_. Ее можно заменить другой строкой при помощи операций связывания =~ или !~:

    $var =~  s/PATTERN/REPLACEMENT/egimosx

    Флаг g задает глобальную замену всех фрагментов, удовлетворяющих образцу PATTERN, текстом REPLACEMENT.

    Флаг е означает, что заменяющий текст REPLACEMENT следует рассматривать как Perl-выражение, которое надо предварительно вычислить. Например, в результате выполнения скрипта

#! perl -w
$str="abaabbaaabbbaaaabbbb"; 
$result=$str =~s[(a+b+)]<length($1)>ge; 
print "result=$result new str=$str\n";
Текст этого примера можно взять здесь.

будет выведено число сделанных замен $result и новое значение строки $str, в которой каждый найденный фрагмент, соответствующий образцу [а+b+], заменен числом, равным его длине:


Рис.1. Результат работы скрипта

    Флаги imosx имеют тот же смысл, что для операции поиска m//.

    Так же, как и в операции замены, в качестве ограничителей для выделения образца можно использовать любую пару символов, не являющихся цифрой, буквой или пробельным символом. Можно использовать различные ограничители для выделения образца и замещающего текста, например, s(PATTERN)<REPLACEMENT>.

    На следующем шаге мы рассмотрим операцию транслитерации.




Предыдущий шаг Содержание Следующий шаг