public class SequencePattern<T>
extends java.lang.Object
implements java.io.Serializable
Similar to Java's Pattern
except it is for sequences over arbitrary types T instead
of just characters.
A regular expression must first be compiled into
an instance of this class. The resulting pattern can then be used to create
a SequenceMatcher
object that can match arbitrary sequences of type T
against the regular expression. All of the state involved in performing a match
resides in the matcher, so many matchers can share the same pattern.
To support sequence matching on a new type T, the following is needed:
for matching type T
SequencePattern.Parser
to compile a
regular expression into a SequencePattern.
MultiPatternMatcher.NodePatternTrigger
for optimizing matches across multiple patternsSequencePattern.NodesMatchChecker
to support backreferencesTokenSequencePattern
for an example of how this class can be extended
to support a specific type T
.
To use
SequencePattern p = SequencePattern.compile("....");
SequenceMatcher m = p.getMatcher(tokens);
while (m.find()) ....
To support a new type T
:
T
to be matchable, it has to have a corresponding NodePattern<T>
that indicates
whether a node is matched or not (see CoreMapNodePattern
for example)Parser
, TokenSequencePattern
and TokenSequenceParser.jj
)SequencePattern supports the following standard regex features:
SequencePattern also supports the following less standard features:
Env
) with respect to which the patterns are compiledEnv
to bind variables for use when compiling patterns
SequenceMatchResult
for accessor methods to retrieve matched groups)
SequencePattern.NodesMatchChecker
MultiNodePattern
,
see MultiCoreMapNodePattern
for example) Note that this and the inherited classes do not implement any custom equals and hashCode functions.
SequenceMatcher
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
SequencePattern.AndPatternExpr |
static class |
SequencePattern.BackRefPatternExpr |
static class |
SequencePattern.GroupPatternExpr
Expression that represents a group.
|
static class |
SequencePattern.MultiNodePatternExpr
Represents a pattern that can match multiple nodes.
|
static class |
SequencePattern.NodePatternExpr
Represents one element to be matched.
|
protected static interface |
SequencePattern.NodesMatchChecker<T> |
static class |
SequencePattern.OrPatternExpr
Expression that represents a disjunction.
|
static interface |
SequencePattern.Parser<T> |
static class |
SequencePattern.PatternExpr
Represents a sequence pattern expressions (before translating into NFA).
|
static class |
SequencePattern.RepeatPatternExpr
Expression that represents a pattern that repeats for a number of times.
|
static class |
SequencePattern.SequenceEndPatternExpr |
static class |
SequencePattern.SequencePatternExpr
Represents a sequence of patterns to be matched.
|
static class |
SequencePattern.SequenceStartPatternExpr |
static class |
SequencePattern.SpecialNodePatternExpr
Represents one element to be matched.
|
static class |
SequencePattern.ValuePatternExpr |
Modifier and Type | Field and Description |
---|---|
static SequencePattern.PatternExpr |
ANY_NODE_PATTERN_EXPR |
protected static edu.stanford.nlp.ling.tokensregex.SequencePattern.State |
MATCH_STATE
An accepting matching state
|
static SequencePattern.NodesMatchChecker<java.lang.Object> |
NODES_EQUAL_CHECKER |
static SequencePattern.PatternExpr |
SEQ_BEGIN_PATTERN_EXPR |
static SequencePattern.PatternExpr |
SEQ_END_PATTERN_EXPR |
Modifier | Constructor and Description |
---|---|
protected |
SequencePattern(SequencePattern.PatternExpr nodeSequencePattern) |
protected |
SequencePattern(java.lang.String patternStr,
SequencePattern.PatternExpr nodeSequencePattern) |
protected |
SequencePattern(java.lang.String patternStr,
SequencePattern.PatternExpr nodeSequencePattern,
SequenceMatchAction<T> action) |
Modifier and Type | Method and Description |
---|---|
static <T> SequencePattern<T> |
compile(Env env,
java.lang.String string) |
protected static <T> SequencePattern<T> |
compile(SequencePattern.PatternExpr nodeSequencePattern) |
<OUT> OUT |
findNodePattern(java.util.function.Function<NodePattern<T>,OUT> filter) |
<OUT> java.util.Collection<OUT> |
findNodePatterns(java.util.function.Function<NodePattern<T>,OUT> filter,
boolean allowOptional,
boolean allowBranching) |
SequenceMatchAction<T> |
getAction() |
SequenceMatcher<T> |
getMatcher(java.util.List<? extends T> tokens) |
protected SequencePattern.PatternExpr |
getPatternExpr() |
double |
getPriority() |
int |
getTotalGroups() |
double |
getWeight() |
java.lang.String |
pattern() |
void |
setAction(SequenceMatchAction<T> action) |
void |
setPriority(double priority) |
void |
setWeight(double weight) |
java.lang.String |
toString() |
<T2> SequencePattern<T2> |
transform(NodePatternTransformer<T,T2> transformer) |
public static final SequencePattern.NodesMatchChecker<java.lang.Object> NODES_EQUAL_CHECKER
public static final SequencePattern.PatternExpr ANY_NODE_PATTERN_EXPR
public static final SequencePattern.PatternExpr SEQ_BEGIN_PATTERN_EXPR
public static final SequencePattern.PatternExpr SEQ_END_PATTERN_EXPR
protected static final edu.stanford.nlp.ling.tokensregex.SequencePattern.State MATCH_STATE
protected SequencePattern(SequencePattern.PatternExpr nodeSequencePattern)
protected SequencePattern(java.lang.String patternStr, SequencePattern.PatternExpr nodeSequencePattern)
protected SequencePattern(java.lang.String patternStr, SequencePattern.PatternExpr nodeSequencePattern, SequenceMatchAction<T> action)
public java.lang.String toString()
toString
in class java.lang.Object
public <T2> SequencePattern<T2> transform(NodePatternTransformer<T,T2> transformer)
public java.lang.String pattern()
protected SequencePattern.PatternExpr getPatternExpr()
public double getPriority()
public void setPriority(double priority)
public double getWeight()
public void setWeight(double weight)
public SequenceMatchAction<T> getAction()
public void setAction(SequenceMatchAction<T> action)
public int getTotalGroups()
public static <T> SequencePattern<T> compile(Env env, java.lang.String string)
protected static <T> SequencePattern<T> compile(SequencePattern.PatternExpr nodeSequencePattern)
public SequenceMatcher<T> getMatcher(java.util.List<? extends T> tokens)
public <OUT> OUT findNodePattern(java.util.function.Function<NodePattern<T>,OUT> filter)
public <OUT> java.util.Collection<OUT> findNodePatterns(java.util.function.Function<NodePattern<T>,OUT> filter, boolean allowOptional, boolean allowBranching)