Python вернуть строку отформатировав с regexp

Есть строка подобно "2r-rj1225-f11e-12-x-w"

Нужно ее переформатировать в следующий формат: все группы по 5 символов, но первая может оставаться, если менее 5 символов, также и последняя может остаться с менее 5 символов

что выше-приведенную строку отформатирует в следующий результат: "2r-rj122-5f11e-12xw"

import re

string = "2r-rj1225-f11e-12-x-w"
baseLength = 5

def formatKey(string: str, baseLength: int) -> str:
    p = re.compile(r"{1,baseLength}[a-zA-Z0-9]{baseLength}[a-zA-z0-9]+")
    formatted = '-'.join(p.match(string))
    return formatted

print(f'The reformatted string is {formatKey(string, baseLength)}')

конечно, код выше не работает. Хотелось бы избежать использования '-'.join и просто отформатировать строку как в этом псевдокоде: regexp(re.compile('[a-z]FORMATREGEXP'), string) где FORMATREGEXP есть regexp, выполняющим задание.

Уточнение: вероятное решение -- это использовать re.sub(pattern, repl, string) функцию: "The sub() function searches for the pattern in the string and replaces the matched strings with the replacement", просто и в одну строчку.


Ответы (0 шт):