import re
def repl(x):
return r"\frac{{{0}}}{{{1} - {2}}}".format(x.group("numer"),
(x.group("denom1") if x.group("neg") else x.group("denom2")),
(x.group("denom2") if x.group("neg") else x.group("denom1")))
string1 = r"- \frac{2}{- 4 \sqrt{2} + 2}"
string2 = r"\frac{2}{- 4 \sqrt{2} + 2}"
pattern = r"(?P<neg>- )?\\frac{(?P<numer>\d*)}{- (?P<denom1>\d* ?\\sqrt{\d*}) \+ (?P<denom2>\d*)\}"
print(re.sub(pattern, repl, string1))
print(re.sub(pattern, repl, string2))
aW1wb3J0IHJlCmRlZiByZXBsKHgpOgoJcmV0dXJuIHIiXGZyYWN7e3swfX19e3t7MX0gLSB7Mn19fSIuZm9ybWF0KHguZ3JvdXAoIm51bWVyIiksCgkJKHguZ3JvdXAoImRlbm9tMSIpIGlmIHguZ3JvdXAoIm5lZyIpIGVsc2UgeC5ncm91cCgiZGVub20yIikpLAoJCSh4Lmdyb3VwKCJkZW5vbTIiKSBpZiB4Lmdyb3VwKCJuZWciKSBlbHNlIHguZ3JvdXAoImRlbm9tMSIpKSkKCQkKc3RyaW5nMSA9IHIiLSBcZnJhY3syfXstIDQgXHNxcnR7Mn0gKyAyfSIKc3RyaW5nMiA9IHIiXGZyYWN7Mn17LSA0IFxzcXJ0ezJ9ICsgMn0iCnBhdHRlcm4gPSByIig/UDxuZWc+LSApP1xcZnJhY3soP1A8bnVtZXI+XGQqKX17LSAoP1A8ZGVub20xPlxkKiA/XFxzcXJ0e1xkKn0pIFwrICg/UDxkZW5vbTI+XGQqKVx9IgpwcmludChyZS5zdWIocGF0dGVybiwgcmVwbCwgc3RyaW5nMSkpCnByaW50KHJlLnN1YihwYXR0ZXJuLCByZXBsLCBzdHJpbmcyKSk=