donn / cmscms.com wrote: > Given the following regex to parse telephone numbers: > > /^(\(?(?<area>[0-9]{3})\)?)?(\-| )?(?<exch>[0-9]{3})(\-| > )?(?<party>[0-9]{4})/ > > Is there a regex.method to access the parse data by group name? I was > hoping something like the following behavior: > > rx = /^(\(?(?<area>[0-9]{3})\)?)?(\-| )?(?<exch>[0-9]{3})(\-| > )?(?<party>[0-9]{4})/ > md = rx.match('800 325-3535') > puts md['area']+md['exch']+md['party'] > > I'm not that skilled with regex (yet), so I don't know if I could > extend the regex class with my own method. I'm not sure what all data > is available to me after parsing. For "group names", you can use this basic replacement idea: [ 1,2,3,4 ].each do |exch| [ "jones","smith" ].each do |party| [ 303,404,505 ].each do |area| array = data.scan(%r{[regex code](#{area})(#{exch})(#{party})[regex code]}) end end end using this code and suitable data, "array" will contain: [[area1,exch1,party1],[area2,exch2,party2], ... ] -- Paul Lutus http://www.arachnoid.com