http://www.crifan.com/python_re_sub_detailed_introduction/