Class Operation.OpUnambiguousRepeat

  • Enclosing class:

    public static class Operation.OpUnambiguousRepeat
    extends Operation.OpRepeat
    Handle a repetition where there is no ambiguity; if the repeated term is matched in the string, then it cannot match anything other than the repeated term. It is also used when the number of occurrences is fixed. In this situation there will never be any need for backtracking, so there is no need to keep any information to support backtracking, and in addition, there is no distinction between greedy and reluctant matching. This operation is used only for a repeated atom or CharClass, which also means that if the repeated term matches then it can only match in one way; a typical example is the term "A*" in the regex "A*B".
    • Method Detail

      • matchesEmptyString

        public int matchesEmptyString()
        Description copied from class: Operation
        Ask whether the regular expression is known, after static analysis, to match a zero-length string
        matchesEmptyString in class Operation.OpRepeat
        a value indicating whether the regex is statically known to match a zero-length string. Specifically: Returning 0 means that it is not known statically whether or not the regex will match a zero-length string; this case typically arises when back-references are involved.
      • getMatchLength

        public int getMatchLength()
        Description copied from class: Operation
        Get the length of the matches returned by this operation if they are fixed-length
        getMatchLength in class Operation.OpRepeat
        the length of the matches, or -1 if the length is variable
      • optimize

        public Operation optimize​(REProgram program,
                                  REFlags flags)
        Description copied from class: Operation
        Optimize the operation
        optimize in class Operation.OpRepeat
        program - the program being optimized
        flags - the regular expression flags
        the optimized operation
      • iterateMatches

        public IntIterator iterateMatches​(REMatcher matcher,
                                          int position)
        Description copied from class: Operation
        Get an iterator returning all the matches for this operation
        iterateMatches in class Operation.OpRepeat
        matcher - supplies the context for the matching; may be updated with information about captured groups
        position - the start position to seek a match
        an iterator returning the endpoints of all matches starting at the supplied position