Regular expression matching is performed on a sequence of characters using a pipeline architecture of regular expression matching stages. Multiple regular expression matching stages are connected together in a pipeline manner, with each of these regular expression matching stages corresponding to a different portions of the regular expression. These stages are response to indications from their immediately preceding stages (if they have a preceding stage) of whether or not a progressive match was determined. If all preceding stages matched for corresponding characters of the sequence of characters, then a stage will identify whether or not the current character matches its programmed portion of the regular expression to a next stage or to another device (e.g., the final stage may indicate to a packet processor whether or not the regular expression is matched).