Documentation

Batteries.Data.String.Matcher

Knuth-Morris-Pratt matcher type

This type is used to keep data for running the Knuth-Morris-Pratt (KMP) string matching algorithm. KMP is a linear time algorithm to locate all substrings of a string that match a given pattern. Generating the algorithm data is also linear in the length of the pattern but the data can be re-used to match the same pattern over different strings.

The KMP data for a pattern string can be generated using Matcher.ofString. Then Matcher.find? and Matcher.findAll can be used to run the algorithm on an input string.

def m := Matcher.ofString "abba"

#eval Option.isSome <| m.find? "AbbabbA" -- false
#eval Option.isSome <| m.find? "aabbaa" -- true

#eval Array.size <| m.findAll "abbabba" -- 2
#eval Array.size <| m.findAll "abbabbabba" -- 3
Instances For
    @[inline]

    Make KMP matcher from pattern substring

    Equations
      Instances For
        @[inline]

        Make KMP matcher from pattern string

        Equations
          Instances For
            @[reducible, inline]

            The byte size of the string pattern for the matcher

            Equations
              Instances For

                Find all substrings of s matching m.pattern.

                Equations
                  Instances For

                    Find the first substring of s matching m.pattern, or none if no such substring exists.

                    Equations
                      Instances For
                        @[inline]

                        Returns all the substrings of s that match pattern.

                        Equations
                          Instances For
                            @[inline]

                            Returns the first substring of s that matches pattern, or none if there is no such substring.

                            Equations
                              Instances For
                                @[inline]

                                Returns true iff pattern occurs as a substring of s.

                                Equations
                                  Instances For
                                    @[reducible, inline]

                                    Returns all the substrings of s that match pattern.

                                    Equations
                                      Instances For
                                        @[reducible, inline]

                                        Returns the first substring of s that matches pattern, or none if there is no such substring.

                                        Equations
                                          Instances For
                                            @[reducible, inline]
                                            abbrev String.containsSubstr (s : String) (pattern : Substring) :

                                            Returns true iff pattern occurs as a substring of s.

                                            Equations
                                              Instances For