in reply to Removing backtracking from a .*? regexp

You can suppress backtracking in the .*? with (?>.*?), but that always makes that part match zero characters. It really has to backtrack into the .*? to try grabbing more characters before matching $target. Does that make sense?

(?>.*?$target) may be what you want, but I'm not sure it will make any difference once you've switched to using [^>]* in the later part.