From: Vincent Fourmond Date: 2006-09-29T18:54:48+09:00 Subject: Re: Regexp help Hello again ! >> I have a string of the form >> >> 2h 3m >> >> or >> >> 3m 2h >> [....] >> Is there a smart regexp one liner that could produce >> >> [2, 3] > > If you want to get [2,3] in both cases, that will be really difficult. > As far as I know, you can only do that in C#, which has named capturing > groups. In all the other languages I know, the capturing groups are > numbered when they are found... That rules it out. Well, just to contradict myself, although this is no one-liner: def scan(str) re = Regexp.new(/(\d+)h.*(\d+)m|(\d+)m.*(\d+)h/) if m = re.match(str) return [m[1], m[2]] if m[1] return [m[4], m[3]] end end p scan("2h 3m") p scan("3m 2h") Cheers ! Vince