- table : Array.PrefixTable Char
- state : Fin (Array.PrefixTable.size s.toMatcher.table + 1)
- pattern : Substring
The pattern for the 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
Make KMP matcher from pattern substring
Instances For
Make KMP matcher from pattern string
Instances For
The byte size of the string pattern for the matcher
Instances For
Find all substrings of s
matching m.pattern
.
Instances For
Accumulator loop for String.Matcher.findAll
Find the first substring of s
matching m.pattern
, or none
if no such substring exists.
Instances For
Returns the longest common prefix of two substrings.
The returned substring will use the same underlying string as s
.
Instances For
Returns the ending position of the common prefix, working up from spos, tpos
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Returns the longest common suffix of two substrings.
The returned substring will use the same underlying string as s
.
Instances For
Returns the starting position of the common prefix, working down from spos, tpos
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
s.stripPrefix pre
will remove pre
from the beginning of s
if it occurs there,
or otherwise return s
.
Instances For
s.stripSuffix suff
will remove suff
from the end of s
if it occurs there,
or otherwise return s
.
Instances For
Count the occurrences of a character in a string.