Package net.sf.saxon.regex
Class OpUnambiguousRepeat
java.lang.Object
net.sf.saxon.regex.Operation
net.sf.saxon.regex.OpRepeat
net.sf.saxon.regex.OpUnambiguousRepeat
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".
-
Nested Class Summary
Nested classes/interfaces inherited from class net.sf.saxon.regex.Operation
Operation.ForceProgressIterator
-
Field Summary
Fields inherited from class net.sf.saxon.regex.Operation
MATCHES_ZLS_ANYWHERE, MATCHES_ZLS_AT_END, MATCHES_ZLS_AT_START, MATCHES_ZLS_NEVER
-
Method Summary
Modifier and TypeMethodDescriptionint
Get the length of the matches returned by this operation if they are fixed-lengthint
Get the maximum depth of looping within this operationiterateMatches
(REMatcher matcher, int position) Get an iterator returning all the matches for this operationint
Ask whether the regular expression is known, after static analysis, to match a zero-length stringOptimize the operationMethods inherited from class net.sf.saxon.regex.OpRepeat
containsCapturingExpressions, display, getInitialCharacterClass, getMinimumMatchLength
-
Method Details
-
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- Overrides:
matchesEmptyString
in classOpRepeat
- Returns:
- a value indicating whether the regex is statically known to match
a zero-length string. Specifically:
- returns
Operation.MATCHES_ZLS_AT_START
if the expression is statically known to match a zero-length string at the start of the supplied input; - returns
Operation.MATCHES_ZLS_AT_END
if it is statically known to return a zero-length string at the end of the supplied input; - returns
Operation.MATCHES_ZLS_ANYWHERE
if it is statically known to match a zero-length string anywhere in the input. - returns
Operation.MATCHES_ZLS_NEVER
if it is statically known that the regex will never match a zero length string.
- returns
-
getMatchLength
public int getMatchLength()Description copied from class:Operation
Get the length of the matches returned by this operation if they are fixed-length- Overrides:
getMatchLength
in classOpRepeat
- Returns:
- the length of the matches, or -1 if the length is variable
-
getMaxLoopingDepth
public int getMaxLoopingDepth()Get the maximum depth of looping within this operation- Overrides:
getMaxLoopingDepth
in classOpRepeat
- Returns:
- the maximum number of nested iterations
-
optimize
Description copied from class:Operation
Optimize the operation -
iterateMatches
Description copied from class:Operation
Get an iterator returning all the matches for this operation- Overrides:
iterateMatches
in classOpRepeat
- Parameters:
matcher
- supplies the context for the matching; may be updated with information about captured groupsposition
- the start position to seek a match- Returns:
- an iterator returning the endpoints of all matches starting at the supplied position
-