If the FSM is required, the simplest might just be to walk through the possibilities:
achictecture behavior of checker is
types states is (SEARCHING, SAW_1, SAW_11, SAW_110);
signal state : states := SEARCHING;
begin
process (clk) begin
if rising_edge(clk) then
case (state) is
when SEARCHING:
if (z = '1') then
state <= SAW_1;
else
state <= SEARCHING;
end if;
z <= '0';
when SAW_1:
if (z = '1') then
state <= SAW_11;
else
state <= SEARCHING;
end if;
z <= '0';
when SAW_11:
if (z = '0') then
state <= SAW_110;
else
state <= SEARCHING;
end if;
z <= '0';
when SAW_110:
state <= SEARCHING;
z <= '1';
end case;
end if;
end process;
end architecture behavior;
This uses a different FSM structure than your original code and can be improved a bit (at least 1 state can be removed), but I think it illustrates the point.