1. A method of detecting in a data stream a complex string of a complex dictionary comprising a set of complex strings, each complex string comprising at least one word in which each character is an indefinite character, the method comprising executing processor-readable instructions causing at least one processor to perform steps of: transforming said complex dictionary into: a segmented dictionary comprising a string prefix and string segments of each complex string in said complex dictionary, each string segment comprising a simple string and a segment suffix, said simple string containing characters defined in an alphabet; and a set of segment descriptors, each segment descriptor defining content of a corresponding string segment in said segmented dictionary; locating in said data stream selected simple strings defined in said segmented dictionary; selecting candidate string segments, from said segmented dictionary, containing said selected simple strings subject to ascertaining congruence of a portion of said data stream, succeeding each said selected simple string, and a segment suffix of a corresponding string segment in said segmented dictionary; and updating a state variable associated with said each complex string according to gauged spans in said data stream between successive positions at which simple strings belonging to said each complex string begin; determining, at each said position, a subset of said candidate string segments belonging to said each complex string; and correlating, at each said position, said state variable with locations, within said each complex string, of candidate string segments of said subset of said candidate string segments.