fork download
  1. import re
  2.  
  3. s = '''M1 hello world 1234_5678 ip som lorem 9321_1231 iste natus error sit voluptatem 4313_4351 ratione voluptatem sequi nesciunt 4312_1234
  4. M2 magnam aliquam 4351_3143 sed quia non numquam 3123_1432'''
  5.  
  6. def repl(m):
  7. return re.sub(r'\s+(\D+)(\d{4})_(\d{4})', '{}\t\\1\t\\2\t\\3\n'.format(m.group(1)), m.group(2))
  8.  
  9. whole_line_pattern = r'(?m)^(M[12])((?:\s+\D+\d{4}_\d{4})+)$[\n\r]*'
  10. res = re.sub(whole_line_pattern, repl, s)
  11. print(res)
Success #stdin #stdout 0s 23288KB
stdin
Standard input is empty
stdout
M1	hello world 	1234	5678
M1	ip som lorem  	9321	1231
M1	iste natus error sit voluptatem   	4313	4351
M1	ratione voluptatem sequi nesciunt   	4312	1234
M2	magnam aliquam 	4351	3143
M2	sed quia non numquam  	3123	1432