Перевернуть строку в скобках регулярным выражением

Подскажите, пожалуйста. Дана строка, и надо перевернуть только те фрагменты строки, которые находятся в круглых скобках. Python. Для наглядности:

"h(el)lo" >> "h(le)lo";

"h(lle)o W(lro)d" >> "h(ell)o W(orl)d"

Я делаю следующим образом:

re.sub(r"\b[a-zA-Z ]+\b", lambda m:m.group(0)[::-1], stroka)

Но данная регулярка переворачивает все символы - и в скобках и без. "one two (three) four" >> "owt eno (eerht) ruof"


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

Автор решения: Stanislav Volodarskiy

Пара \(, \) - это просто скобки в строке. ([^)]*) - группа символов внутри скобок. Принимаются любые символы кроме закрывающей скобки. Группу можно получить внутри lambda-выражения в виде m.group(1):

re.sub(r'\(([^)]*)\)', lambda m: f'({m.group(1)[::-1]})', 'h(lle)o W(lro)d')
'h(ell)o W(orl)d'
→ Ссылка