[Python] How to replace only part of the match with python re.sub

Discussão em 'Python' iniciado por Stack, Agosto 4, 2025.

  1. Stack

    Stack Membro Participativo

    I need to match two cases by one reg expression and do replacement

    'long.file.name.jpg' -> 'long.file.name_suff.jpg'

    'long.file.name_a.jpg' -> 'long.file.name_suff.jpg'

    I'm trying to do the following

    re.sub('(\_a)?\.[^\.]*$' , '_suff.',"long.file.name.jpg")


    But this is cut the extension '.jpg' and I'm getting

    long.file.name_suff. instead of long.file.name_suff.jpg I understand that this is because of [^.]*$ part, but I can't exclude it, because I have to find last occurrence of '_a' to replace or last '.'

    Is there a way to replace only part of the match?

    Continue reading...

Compartilhe esta Página