Class SearchPattern

java.lang.Object
org.eclipse.jetty.util.SearchPattern

public class SearchPattern extends Object
SearchPattern Fast search for patterns within strings and arrays of bytes. Uses an implementation of the Boyer–Moore–Horspool algorithm with a 256 character alphabet. The algorithm has an average-case complexity of O(n) on random text and O(nm) in the worst case. where: m = pattern length n = length of data to search
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final int
     
    private final byte[]
     
    private final int[]
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    SearchPattern(byte[] pattern)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    compile(byte[] pattern)
    Produces a SearchPattern instance which can be used to find matches of the pattern in data
    compile(String pattern)
    Produces a SearchPattern instance which can be used to find matches of the pattern in data
    int
    endsWith(byte[] data, int offset, int length)
    Search for a partial match of the pattern at the end of the data.
    int
     
    int
    match(byte[] data, int offset, int length)
    Search for a complete match of the pattern within the data
    int
    startsWith(byte[] data, int offset, int length, int matched)
    Search for a possibly partial match of the pattern at the start of the data.
    private void
    validateArgs(byte[] data, int offset, int length)
    Performs legality checks for standard arguments input into SearchPattern methods.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • ALPHABET_SIZE

      private static final int ALPHABET_SIZE
      See Also:
    • table

      private final int[] table
    • pattern

      private final byte[] pattern
  • Constructor Details

    • SearchPattern

      private SearchPattern(byte[] pattern)
      Parameters:
      pattern - byte array containing the pattern used for matching
  • Method Details

    • compile

      public static SearchPattern compile(byte[] pattern)
      Produces a SearchPattern instance which can be used to find matches of the pattern in data
      Parameters:
      pattern - byte array containing the pattern
      Returns:
      a new SearchPattern instance using the given pattern
    • compile

      public static SearchPattern compile(String pattern)
      Produces a SearchPattern instance which can be used to find matches of the pattern in data
      Parameters:
      pattern - string containing the pattern
      Returns:
      a new SearchPattern instance using the given pattern
    • match

      public int match(byte[] data, int offset, int length)
      Search for a complete match of the pattern within the data
      Parameters:
      data - The data in which to search for. The data may be arbitrary binary data, but the pattern will always be StandardCharsets.US_ASCII encoded.
      offset - The offset within the data to start the search
      length - The length of the data to search
      Returns:
      The index within the data array at which the first instance of the pattern or -1 if not found
    • endsWith

      public int endsWith(byte[] data, int offset, int length)
      Search for a partial match of the pattern at the end of the data.
      Parameters:
      data - The data in which to search for. The data may be arbitrary binary data, but the pattern will always be StandardCharsets.US_ASCII encoded.
      offset - The offset within the data to start the search
      length - The length of the data to search
      Returns:
      the length of the partial pattern matched and 0 for no match.
    • startsWith

      public int startsWith(byte[] data, int offset, int length, int matched)
      Search for a possibly partial match of the pattern at the start of the data.
      Parameters:
      data - The data in which to search for. The data may be arbitrary binary data, but the pattern will always be StandardCharsets.US_ASCII encoded.
      offset - The offset within the data to start the search
      length - The length of the data to search
      matched - The length of the partial pattern already matched
      Returns:
      the length of the partial pattern matched and 0 for no match.
    • validateArgs

      private void validateArgs(byte[] data, int offset, int length)
      Performs legality checks for standard arguments input into SearchPattern methods.
      Parameters:
      data - The data in which to search for. The data may be arbitrary binary data, but the pattern will always be StandardCharsets.US_ASCII encoded.
      offset - The offset within the data to start the search
      length - The length of the data to search
    • getLength

      public int getLength()
      Returns:
      The length of the pattern in bytes.