String searching is a subject of both theoretical and practical interest in computer science. This is a bibliographic overview of the field and an anthology of descriptions of the principal algorithms available. The aim is two-fold: on the one hand, to provide an easy-to-read comparison of the available techniques in each area; and on the other, to furnish the reader with a reference to in-depth descriptions of the major algorithms. Topics covered include methods for finding exact and approximate string matches, calculating edit distances between strings, finding common sequences and finding the longest repetitions within strings. For clarity, all the algorithms are presented in a uniform format and notation.