Enum fancy_regex::Expr [−][src]
pub enum Expr {}Show 16 variants
Empty, Any { newline: bool, }, StartText, EndText, StartLine, EndLine, Literal { val: String, casei: bool, }, Concat(Vec<Expr>), Alt(Vec<Expr>), Group(Box<Expr>), LookAround(Box<Expr>, LookAround), Repeat { child: Box<Expr>, lo: usize, hi: usize, greedy: bool, }, Delegate { inner: String, size: usize, casei: bool, }, Backref(usize), NamedBackref(String), AtomicGroup(Box<Expr>),
Expand description
Regular expression AST. This is public for now but may change.
Variants
An empty expression, e.g. the last branch in (a|b|)
Any character, regex .
Fields of Any
newline: bool
Whether it also matches newlines or not
Start of input text
End of input text
Start of a line
End of a line
The string as a literal, e.g. a
Concatenation of multiple expressions, must match in order, e.g. a.
is a concatenation of
the literal a
and .
for any character
Alternative of multiple expressions, one of them must match, e.g. a|b
is an alternative
where either the literal a
or b
must match
Capturing group of expression, e.g. (a.)
matches a
and any character and “captures”
(remembers) the match
LookAround(Box<Expr>, LookAround)
Look-around (e.g. positive/negative look-ahead or look-behind) with an expression, e.g.
(?=a)
means the next character must be a
(but the match is not consumed)
Repeat of an expression, e.g. a*
or a+
or a{1,3}
Fields of Repeat
child: Box<Expr>
The expression that is being repeated
lo: usize
The minimum number of repetitions
hi: usize
The maximum number of repetitions (or usize::MAX
)
greedy: bool
Greedy means as much as possible is matched, e.g. .*b
would match all of abab
.
Non-greedy means as little as possible, e.g. .*?b
would match only ab
in abab
.
Delegate a regex to the regex crate. This is used as a simplification so that we don’t have to represent all the expressions in the AST, e.g. character classes.
Fields of Delegate
Backref(usize)
Back reference to a capture group, e.g. \1
in (abc|def)\1
references the captured group
and the whole regex matches either abcabc
or defdef
.
NamedBackref(String)
Back reference to a named capture group.
Atomic non-capturing group, e.g. (?>ab|a)
in text that contains ab
will match ab
and
never backtrack and try a
, even if matching fails after the atomic group.
Implementations
Parse the regex and return an expression (AST) and a bit set with the indexes of groups that are referenced by backrefs.