正規表現を使用して次のことを達成したいと思います。
入力
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
出力
M1 hello world 1234 5678
M1 ip som lorem 9321 1231
M1 iste natus error sit voluptatem 4313 4351
M2 magnam aliquam 4351 3143
M2 sed quia non numquam 3123 1432
正規表現の一致
(M[1|2])?\s+(\D+)(\d{4})_(\d{4})(\n)?
とサブ
\1\t\2\t\3\t\4\n
近づきます(https://regex101.com/r/tKgCBi/1/を参照)
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
この (オプションの) 一致が行われない場合、最後に (オプションで) 一致したグループを使用するにはどうすればよいですか? (M[1|2])? 失敗します。
(私はPythonの「re」モジュールを使用しています)