From: Edwin Fine Date: 2007-06-03T14:02:16+09:00 Subject: Re: No way of looking for a regrexp match starting from a pa Kenneth McDonald wrote: > I'm probably just missing something obvious, but I haven't found a way > to match a regular expression against only part of a string, in > particular only past a certain point of a string, as a way of finding > successive matches. Of course, one could do a match against a string, > take the substring past that match and do a match against the substring, > and so on, to find all of the matches for the string, but that could be > very expensive for very large strings. > > I'm aware of the String.scan method, but that doesn't work for me > because it doesn't return MatchData instances. > > What I want is just something like regexp.match(string, n), where the > regexp starts looking for a match at or after position n in the string. > > > Thanks, > Ken How about this? def match(s, re, n) /(?:.{#{n}})(#{re})/.match(s) end irb(main):043:0> p s "abdefgh abdefgh abdefgh abdefgh abdefgh abdefgh abdefgh abdefgh abdefgh abdefgh " irb(main):044:0> p match(s, /abd/, 10).begin(1) 16 irb(main):045:0> p match(s, /abd/, 20).begin(1) 24 -- Posted via http://www.ruby-forum.com/.