Объясните re.sub(r"(\w)([A-Z])", r"\1 \2", "WordWordWord")

Рейтинг: -1Ответов: 1Опубликовано: 24.07.2023

Здраствуйте, можете пожалуйста объяснить что означают символы(для чего нужен каждый из них)

re.sub(r"(\w)([A-Z])", r"\1 \2", "WordWordWord")

К сведению, я изучаю python месяц.

Ответы

▲ 1

В приведенном примере

re.sub(r"(\w)([A-Z])", r"\1 \2", "WordWordWord")
         ^||^|||||||     |||||   < Первая группа
          ^^ |||||||     |||||   < Эквивалентно диапазонам [A-Za-z0-9_]
             ^|||||^     |||||   < Вторая группа
              ^^^^^      |||||   < диапазон латинских буквенных символов в верхнем регистре
                         ^^|||   < возвращаем первую группу
                           ^||   < пробел
                            ^^   < возвращаем вторую группу

re.sub - Возвращает новую строку, полученную в результате замены по указанному шаблону

re.sub("шаблон замены", "на что меняем", "данные для изменения")

r"" - текст в raw, считать спецсимволы обычным текстом

>>>print("\ttext")
<<<    text

>>>print(r"\ttext")
<<<\ttext

При запуске изначальной команды текст WordWordWord заменится на Word Word Word


Вопрос в том, как должна работать замена текста в случае встречи текста где все буквы пишутся в верхнем регистре, для примера WORD, данное регулярное выражение установит пробелы следующим образом: W OR D.
Для того, что бы разделение проходило под одиночные символы, вторую часть выражения следует заменить на позитивный просмотр вперед и убрать подстановку второй группы, так как ее больше не существует:

re.sub(r"(\w)(?=[A-Z])", r"\1 ", "WORD")
              ^^

результатом в данном случае будет W O R D