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 TSequencePattern.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 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 Form| Modifier 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 |
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) |
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.Objectpublic <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)