Когда вы используете шаблон (?<=\d\d) apples
, совпадение начинается сразу после 2 цифр и становится пробелом плюс apples
.Если вы попытаетесь поменять местами два значения, вам нужно потреблять обоих, и, как вы видите, lookbehind не потребляет текст.
Таким образом, вам нужно использовать группы захвата здесь, вшаблон и замените его на соответствующие обратные ссылки:
result = re.sub(r"(\d+)(\s+)(apples)", r"\3\2\1", 'Look 30 apples.')
См. демонстрационную версию regex . Регулексный график :

Подробности
(\d+)
-Группа захвата 1 (\1
в шаблоне замены): одна или несколько цифр (\s+)
- Группа захвата 2 (\2
в шаблоне замены): один или несколько пробелов (apples)
- Группа захвата 3 (\3
в шаблоне замены): apples
.
Демо Python :
import re
result = re.sub(r"(\d+)(\s+)(apples)", r"\3\2\1", "Look 30 apples.")
print(result)