1. A method of processing a data packet comprising: comparing the data packet with a list of regular expressions or rules stored in a content addressable memory (CAM) array to determine if the data packet matches any of the regular expressions or rules; wherein comparing the data packet comprises: (a) comparing the data packet with the regular expressions and rules stored in the CAM array; (b) shifting the data packet by one symbol, thereby providing a shifted pattern; (c) comparing the shifted pattern with the regular expressions and rules stored in the CAM array; and (d) repeating steps (b) and (c) until the entire data packet has been shifted and compared with the regular expressions and rules stored in the CAM array; upon detecting a match between the data packet and a regular expression or rule, switching the data packet to a server designated for processing data packets exhibiting the regular expression or rule; asserting a first match signal when the data packet or shifted pattern matches a first entry of the CAM array having a length of N symbols; and preventing a second entry of the CAM array from asserting a second match signal until after the data packet or shifted pattern has been shifted N times after the first match signal is asserted.