Class SearchPattern


  • public class SearchPattern
    extends java.lang.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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static SearchPattern compile​(byte[] pattern)
      Produces a SearchPattern instance which can be used to find matches of the pattern in data
      static SearchPattern compile​(java.lang.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 getLength()  
      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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • 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​(java.lang.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.
      • getLength

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