Вы уже собрали нужные данные в группы, и теперь вы можете использовать re.sub
, чтобы заменить все совпадение только содержимым group1 и group2.
Попробуйте ваш измененный код Python,
import re
string = 'a2017a12a'
pattern = re.compile(".*(20[0-9]{2}).?(0[1-9]|1[0-2]).*")
result = re.sub(pattern, r'\1\2', string)
print(result)
Обратите внимание, как я добавил .*
вокруг шаблона, поэтому любые дополнительные символы вокруг ваших данных сопоставляются и удаляются.Также удалены лишние скобки, которые не были нужны.Это также будет работать со строками, где вы можете иметь другие цифры, окружающие этот текст, например: hello123 a2017a12a some other 99 numbers
Вывод,
201712
Regex Demo