let match_frame (r:Str.regexp) (s:string) (a,b) : result =
  try begin 
  let s  = String.sub s a (b-a+1)    in  
  let i  = Str.search_forward r s 0 in
  let y  = Str.matched_string s      in
  let j  = (Str.match_end ())-1      in  Some (a+i,y,(matched_groups 1 s),a+j) 
  end with Not_found -> None