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