Переключение регистра

При замене часто бывает нужно обеспечить правильный регистр символов в заменяющем слове (нижний или верхний в зависимости от ситуации). Задача легко решается в Perl при помощи служебных последовательностей с обратной косой чертой. Комбинация \U преобразует все последующие символы к верхнему регистру:

$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ теперь содержит "I saw BARNEY with FRED."


Аналогичная комбинация \L обеспечивает преобразование к нижнему регистру. Продолжение предыдущего фрагмента:

s/(fred|barney)/\L$1/gi; # $_ теперь содержит "I saw barney with fred."


По умолчанию преобразование распространяется на остаток (заменяющей) строки; также можно вручную отменить переключение регистра комбинацией \E:

s/(\w+) with (\w+)/\U$2\E with $1/i; # $_ содержит "I saw FRED with barney."


При записи в нижнем регистре (\l и \u) эти комбинации влияют только на следующий символ:

s/(fred|barney)/\u$1/ig; # $_ теперь содержит "I saw FRED with Barney."


Они даже могут использоваться в сочетании друг с другом. Например, объединение \u с \L означает: «все в нижнем регистре, но первая буква в верхнем регистре»:

s/(fred|barney)/\u\L$1/ig; # $_ теперь содержит "I saw Fred with Barney."


Хотя сейчас мы рассматриваем переключение регистра в связи с заменой, эти комбинации работают в любой строке, заключенной в кавычки:

print "Hello, \L\u$name\E, would you like to play a game?\n";
Теги:
регулярные выражения
Добавлено: 20 Июля 2018 19:32:52 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...