library with some exciting features such as approximate (fuzzy) matching.
At the core of TRE is a new algorithm for regular expression matching with
submatch addressing. The algorithm uses linear worst-case time in the length
of the text being searched, and quadratic worst-case time in the length of
the used regular expression. In other words, the time complexity of the
algorithm is O(M2N), where M is the length of the regular expression and N
is the length of the text. The used space is also quadratic on the length
of the regex, but does not depend on the searched string. This quadratic
behaviour occurs only on pathological cases which are probably very rare
in practice.