Родриго Жирао Серрао: TIL #131 – Изменение регистра в поиске и замене
Функции поиска и замены в VS Code позволяют сопоставлять шаблоны на основе regex и ссылаться на группы при замене. Мощной функцией является возможность изменять регистр совпадающих групп с помощью специальных последовательностей. Последовательности включают \u для перевода первой буквы в верхний регистр, \U для перевода всей группы в верхний регистр, \l для перевода первой буквы в нижний регистр и \L для перевода всей группы в нижний регистр. Например, замена слова "all in one go" на \U$1 превращает его в "ALL IN ONE GO". В отличие от этого, функция Python re.sub, хотя и поддерживает динамические замены, не предлагает таких встроенных специальных последовательностей для работы с регистром. Чтобы добиться подобных результатов в Python, необходимо реализовать пользовательские функции, которые взаимодействуют с объектом сопоставленного текста. Эти функции Python, такие как all_upper и first_upper, имитируют поведение специальных последовательностей VS Code, программно изменяя регистр сопоставленной строки. Функция all_upper переводит всю найденную группу в верхний регистр, что соответствует \U в VS Code. Аналогично, функция first_upper переводит в заглавный регистр только начальный символ совпадения, что соответствует \u в VS Code. Модуль Python требует ручной реализации этих изменений регистра, в отличие от прямых специальных последовательностей, предоставляемых VS Code.
re.sub, хотя и поддерживает динамические замены, не предлагает таких встроенных специальных последовательностей для работы с регистром. Чтобы добиться подобных результатов в Python, необходимо реализовать пользовательские функции, которые взаимодействуют с объектом сопоставленного текста. Эти функции Python, такие какall_upperиfirst_upper, имитируют поведение специальных последовательностей VS Code, программно изменяя регистр сопоставленной строки. Функцияall_upperпереводит всю найденную группу в верхний регистр, что соответствует \U в VS Code. Аналогично, функцияfirst_upperпереводит в заглавный регистр только начальный символ совпадения, что соответствует \u в VS Code. Модуль Python требует ручной реализации этих изменений регистра, в отличие от прямых специальных последовательностей, предоставляемых VS Code.