re = /^(.+)(\[ *)(\d+)(\] *)(.+ )(.+)$/m
str = 'DIN[ 1] ON DCS_SpeedSafe
DIN[ 201] ON *IMSTP
DIN[ 202] ON *HOLD
DIN[ 203] ON SFSPD
DIN[ 204] OFF CSTOPI
DIN[ 205] OFF FAULT RESET
DIN[ 206] OFF START
DIN[ 207] OFF HOME
DIN[ 208] ON ENBL
DIN[ 209] OFF RSR1
DIN[ 210] OFF RSR2
DIN[ 211] OFF RSR3
DIN[ 212] OFF RSR4
DIN[ 213] OFF RSR5
DIN[ 214] OFF RSR6
DIN[ 215] OFF RSR7
DIN[ 216] OFF RSR8
DIN[ 219] OFF SempreOff
DIN[ 220] OFF Abilita Ciclo
DIN[ 221] OFF Abilitazione generale
DIN[ 225] OFF CaricoOk
DIN[ 226] OFF CarFuoriIngombro
DIN[ 227] OFF TraslOK
DIN[ 228] OFF TraslFuoriIngombro
DIN[ 229] OFF PezPresNastroCarico
DIN[ 230] OFF FtControlloSagoma1
DIN[ 231] OFF FtControlloSagoma2
DIN[ 232] OFF TipSagoma1
DIN[ 233] OFF TipSagoma2
DIN[ 234] OFF TavRqDepo1
DIN[ 235] OFF TavRqScambio1
DIN[ 236] OFF TavRqPrel1
DIN[ 237] OFF TavPezScarto
DIN[ 238] OFF TavFuoriImgombro
DIN[ 239] OFF TavInclusa
DIN[ 240] OFF PrelievoNastroCarico
DIN[ 241] OFF PrelievoTavola
DIN[ 242] OFF ScartoCtrlUsura
DIN[ 243] OFF TavPezPres1
DIN[ 244] OFF TavPezPres2
DIN[ 245] OFF Ctrl Ft Enable
DIN[ 246] OFF TavRqDepo2
DIN[ 247] OFF TavRqScambio2
DIN[ 248] OFF TavRqPrel2
DIN[ 249] OFF NastroAbil
DIN[ 250] OFF Carico2Ok
DIN[ 251] OFF Car2FuoriIng
DIN[ 252] OFF PezPresNastro2
DIN[ 253] OFF Nastro2Abil
DIN[ 254] OFF PriorAltern/Nas2
DIN[ 255] OFF DemoOffsEsegui
DIN[ 256] OFF DemoOffsAddOffs
DIN[ 257] OFF EnbCtrlSmussi
DIN[ 258] OFF CtrlSmussiRisKo
DIN[ 259] OFF CtrlSmussiRisOk
DIN[ 260] OFF EnbCtrlColore
DIN[ 261] OFF CtrlColoreRisKo
DIN[ 262] OFF CtrlColoreRisOk
DIN[ 263] OFF CassScartoPres
DIN[ 265] OFF Prel1_StopRq
DIN[ 266] OFF Prel2_StopRq
DIN[ 267] OFF DepoTrasl_StopRq
DIN[ 268] OFF DepoTav1_StopRq
DIN[ 269] OFF DepoTav2_StopRq
DIN[ 270] OFF CtrlSmus_StopRq
DIN[ 273] OFF Magnet_A
DIN[ 274] OFF Smagnet_A
DIN[ 275] OFF Magnet_B
DIN[ 276] OFF Smagnet_B
DIN[ 277] OFF SoffioA
DIN[ 278] OFF SoffioB
DOUT[ 201] OFF CMDENBL
DOUT[ 202] ON SYSRDY
DOUT[ 203] OFF PROGRUN
DOUT[ 204] OFF PAUSED
DOUT[ 205] OFF HELD
DOUT[ 206] OFF FAULT
DOUT[ 207] ON ATPERCH
DOUT[ 208] OFF TPENBL
DOUT[ 209] OFF BATALM
DOUT[ 210] OFF BUSY
DOUT[ 211] OFF ACK1
DOUT[ 212] OFF ACK2
DOUT[ 213] OFF ACK3
DOUT[ 214] OFF ACK4
DOUT[ 215] OFF ACK5
DOUT[ 216] OFF ACK6
DOUT[ 217] OFF NumProgErr
DOUT[ 218] ON InHome
DOUT[ 219] OFF InManut
DOUT[ 220] OFF InRiscaldamento
DOUT[ 221] OFF InPulizPz
DOUT[ 222] OFF InCheckFt
DOUT[ 223] OFF SegnaliSimulati
DOUT[ 224] OFF Modo T1 Attivo
DOUT[ 233] OFF CicloRiposo(Tappa0)
DOUT[ 234] OFF PezPrelNastroCarico
DOUT[ 235] OFF CicloNastroCarico
DOUT[ 236] ON NastroCaricoFuoriIng
DOUT[ 237] OFF PezDepTrasl
DOUT[ 238] OFF CicloTrasl
DOUT[ 239] ON TraslFuoriIng
DOUT[ 240] OFF PezScarto
DOUT[ 241] OFF PzNoPrelNastroCarico
DOUT[ 242] OFF TavPezDep1
DOUT[ 243] OFF TavPezScambio1
DOUT[ 244] OFF TavPezPrel1
DOUT[ 245] ON TavFuoriIng
DOUT[ 246] OFF CicloTav
DOUT[ 247] OFF TavPezNoPrel1
DOUT[ 248] OFF TavPezNoPrel2
DOUT[ 249] OFF TavPezDep2
DOUT[ 250] OFF TavPezScambio2
DOUT[ 251] OFF TavPezPrel2
DOUT[ 252] OFF PezPrelNastro2
DOUT[ 253] OFF CicloNastro2
DOUT[ 254] OFF FuoriIngNastro2
DOUT[ 255] OFF PezNoPrelNas2
DOUT[ 256] OFF DemoOfsPosOk
DOUT[ 257] OFF PosCtrlSmussi
DOUT[ 258] OFF PosCtrlColore
DOUT[ 259] ON FuoriIngCtrlSmus
DOUT[ 260] ON FuoriIngProfil
DOUT[ 267] OFF MagneteAAttira
DOUT[ 268] OFF MagnateARilascia
DOUT[ 269] OFF MagneteBAttira
DOUT[ 270] OFF MagneteBRilascia
DOUT[ 273] OFF Prel1_Stop
DOUT[ 274] OFF Prel2_Stop
DOUT[ 275] OFF DepoTrasl_Stop
DOUT[ 276] OFF DepoTav1_Stop
DOUT[ 277] OFF DepoTav2_Stop
DOUT[ 278] OFF CtrlSmus_Stop
GIN[ 1] 0 NumProg
GIN[ 2] 0 VelCiclo
GIN[ 3] 0 CodPastiglia
GIN[ 4] 0 Offset X
GIN[ 5] 0 Offset Y
GIN[ 6] 0 Offset Z
GIN[ 7] 0 Offset rotaz X
GIN[ 8] 0 Offset rotaz Y
GIN[ 9] 0 Offset rotaz Z
GIN[ 15] 0 CmdMan
GOUT[ 1] 0 NumeroProgAttivo
GOUT[ 2] 0 ComandoEseguito
GOUT[ 3] 0 DemoOffsNumPos
UI[ 1] ON *IMSTP
UI[ 2] ON *Hold
UI[ 3] ON *SFSPD
UI[ 4] OFF Cycle stop
UI[ 5] OFF Fault reset
UI[ 6] OFF Start
UI[ 7] OFF Home
UI[ 8] ON Enable
UI[ 9] OFF Rsr0001
UI[ 10] OFF RSR2/PNS2/STYLE2
UI[ 11] OFF RSR3/PNS3/STYLE3
UI[ 12] OFF RSR4/PNS4/STYLE4
UI[ 13] OFF RSR5/PNS5/STYLE5
UI[ 14] OFF RSR6/PNS6/STYLE6
UI[ 15] OFF RSR7/PNS7/STYLE7
UI[ 16] OFF RSR8/PNS8/STYLE8
UO[ 1] OFF Cmd enabled
UO[ 2] ON System ready
UO[ 3] OFF Prg running
UO[ 4] OFF Prg paused
UO[ 5] OFF Motion held
UO[ 6] OFF Fault
UO[ 7] ON At perch
UO[ 8] OFF TP enabled
UO[ 9] OFF Batt alarm
UO[ 10] OFF Busy
UO[ 11] OFF ACK1/SNO1
UO[ 12] OFF ACK2/SNO2
UO[ 13] OFF ACK3/SNO3
UO[ 14] OFF ACK4/SNO4
UO[ 15] OFF ACK5/SNO5
UO[ 16] OFF ACK6/SNO6
SI[ 1] OFF Fault reset
SI[ 2] ON Remote
SI[ 3] ON Hold
SI[ 4] OFF User PB#1
SI[ 5] OFF User PB#2
SI[ 6] OFF Cycle start
SI[ 8] ON CE/CR Select b0
SI[ 9] ON CE/CR Select b1
SO[ 1] OFF Cycle start
SO[ 2] OFF Hold
SO[ 3] OFF Fault LED
SO[ 4] OFF Batt alarm
SO[ 5] OFF User LED#1
SO[ 6] OFF User LED#2
SO[ 7] OFF TP enabled
RO[ 1] OFF SoffioA
RO[ 2] OFF SoffioB
FLG[ 1] OFF DCS_SpeedSafeMem
FLG[ 2] OFF Simula
FLG[ 3] OFF RemoteOverDsb
'
subst = '\\1 \\t \\3 \\t \\6'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html