((from|from)*,?|(from|from),?) ((from)|(FROM)),? (((from)|(FROM))|((from)|(FROM))?,*) (\s*((from)|(FROM))+)|(((from)|(FROM))*,) (((from)|(FROM))).*,.*,.* (((from)|(FROM))).*,.*,.+ ==== 2 or more comma's (((from)|(FROM))).*,.+ ==== 1 or more comma's (((from tbl)|(FROM tbl))).*,.+ ==== 1 or more comma's ,.*(tbl|qry) ==== changed to include views and proceeded by 1 or more comma's