Enum fancy_regex::Expr [−][src]
pub enum Expr {
Show 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
Expand description
An empty expression, e.g. the last branch in (a|b|)
Expand description
Any character, regex .
Show fields
Fields of Any
newline: boolExpand description
Whether it also matches newlines or not
Expand description
Start of input text
Expand description
End of input text
Expand description
Start of a line
Expand description
End of a line
Expand description
The string as a literal, e.g. a
Show fields
Expand description
Concatenation of multiple expressions, must match in order, e.g. a. is a concatenation of
the literal a and . for any character
Expand description
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
Expand description
Capturing group of expression, e.g. (a.) matches a and any character and “captures”
(remembers) the match
LookAround(Box<Expr>, LookAround)Expand description
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)
Expand description
Repeat of an expression, e.g. a* or a+ or a{1,3}
Show fields
Fields of Repeat
child: Box<Expr>Expand description
The expression that is being repeated
lo: usizeExpand description
The minimum number of repetitions
hi: usizeExpand description
The maximum number of repetitions (or usize::MAX)
greedy: boolExpand description
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.
Expand description
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.
Show fields
Backref(usize)Expand description
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)Expand description
Back reference to a named capture group.
Expand description
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
impl Expr[src]
impl Expr[src]pub fn parse_tree(re: &str) -> Result<ExprTree>[src]
pub fn parse_tree(re: &str) -> Result<ExprTree>[src]Parse the regex and return an expression (AST) and a bit set with the indexes of groups that are referenced by backrefs.