So the way to read this: (?:.(?!<a))*? would be "match on any character as long as it isn't followed by a '<a'" Why do you need the positive lookahead assertion though - to ensure that the characters aren't consumed in case of a bad match? Wes -- Posted via http://www.ruby-forum.com/.