import re
s = '''M1 hello world 1234_5678 ip som lorem 9321_1231 iste natus error sit voluptatem 4313_4351 ratione voluptatem sequi nesciunt 4312_1234
M2 magnam aliquam 4351_3143 sed quia non numquam 3123_1432'''
def repl( m) :
return re .sub ( r'\s +(\D +)(\d {4})_(\d {4})' , '{}\t \\ 1\t \\ 2\t \\ 3\n ' .format ( m.group ( 1 ) ) , m.group ( 2 ) )
whole_line_pattern = r'(?m)^(M[12])((?:\s +\D +\d {4}_\d {4})+)$[\n \r ]*'
res = re .sub ( whole_line_pattern, repl, s)
print ( res)
aW1wb3J0IHJlCgpzID0gJycnTTEgIGhlbGxvIHdvcmxkIDEyMzRfNTY3OCAgaXAgc29tIGxvcmVtICA5MzIxXzEyMzEgIGlzdGUgbmF0dXMgZXJyb3Igc2l0IHZvbHVwdGF0ZW0gICA0MzEzXzQzNTEgIHJhdGlvbmUgdm9sdXB0YXRlbSBzZXF1aSBuZXNjaXVudCAgIDQzMTJfMTIzNApNMiBtYWduYW0gYWxpcXVhbSA0MzUxXzMxNDMgIHNlZCBxdWlhIG5vbiBudW1xdWFtICAzMTIzXzE0MzInJycKCmRlZiByZXBsKG0pOgoJcmV0dXJuIHJlLnN1YihyJ1xzKyhcRCspKFxkezR9KV8oXGR7NH0pJywgJ3t9XHRcXDFcdFxcMlx0XFwzXG4nLmZvcm1hdChtLmdyb3VwKDEpKSwgbS5ncm91cCgyKSkKCQp3aG9sZV9saW5lX3BhdHRlcm4gPSByJyg/bSleKE1bMTJdKSgoPzpccytcRCtcZHs0fV9cZHs0fSkrKSRbXG5ccl0qJwpyZXMgPSByZS5zdWIod2hvbGVfbGluZV9wYXR0ZXJuLCByZXBsLCBzKQpwcmludChyZXMp