re = /([A-Z,0-9, ]*\d )?(?:(\d\d)(\d\d)\/)?([a-z,A-Z,0-9, ,\-,',_,\.,\/ ,\*]*?)( [\-\+]?\d+,\d\d)?/
str = 'CARTE X1796 1209/FREE MOBILE 75 PARIS
CARTE 51002 ITUNES.COM/BILL LUXEMBURG
CARTE X1796 0209/SNCF INTERNET 75 PARIS CEDEX 09
CARTE X1796 1408/THE COLUMBIA STO 124 -156,76
CARTE X1796 1208/NICKLAUS NORTH G 124 -168,41
CARTE 51002 PAYPAL*DIGITALRIVE DRI* 35314369001
CARTE 51002 APPLE ONLINE EURO HOLLYHILL
PAYPAL*PAYPAL*PHIBUELEC 4029357733
PAYPAL*OSCARO COM 35314369001
'
subst = 'Nom rationnalisé: $4\\rMoyen de paiement: $1\\rDate opération :$2/$3\\r\\r'
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