Struct regex_automata::Match
source · pub struct Match {
pattern: PatternID,
span: Span,
}
Expand description
A representation of a match reported by a regex engine.
A match has two essential pieces of information: the PatternID
that
matches, and the Span
of the match in a haystack.
The pattern is identified by an ID, which corresponds to its position
(starting from 0
) relative to other patterns used to construct the
corresponding regex engine. If only a single pattern is provided, then all
matches are guaranteed to have a pattern ID of 0
.
Every match reported by a regex engine guarantees that its span has its start offset as less than or equal to its end offset.
Fields§
§pattern: PatternID
The pattern ID.
span: Span
The underlying match span.
Implementations§
source§impl Match
impl Match
sourcepub fn new<S: Into<Span>>(pattern: PatternID, span: S) -> Match
pub fn new<S: Into<Span>>(pattern: PatternID, span: S) -> Match
Create a new match from a pattern ID and a span.
This constructor is generic over how a span is provided. While
a Span
may be given directly, one may also provide a
std::ops::Range<usize>
.
§Panics
This panics if end < start
.
§Example
This shows how to create a match for the first pattern in a regex object using convenient range syntax.
use regex_automata::{Match, PatternID};
let m = Match::new(PatternID::ZERO, 5..10);
assert_eq!(0, m.pattern().as_usize());
assert_eq!(5, m.start());
assert_eq!(10, m.end());
sourcepub fn must<S: Into<Span>>(pattern: usize, span: S) -> Match
pub fn must<S: Into<Span>>(pattern: usize, span: S) -> Match
Create a new match from a pattern ID and a byte offset span.
This constructor is generic over how a span is provided. While
a Span
may be given directly, one may also provide a
std::ops::Range<usize>
.
This is like Match::new
, but accepts a usize
instead of a
PatternID
. This panics if the given usize
is not representable
as a PatternID
.
§Panics
This panics if end < start
or if pattern > PatternID::MAX
.
§Example
This shows how to create a match for the third pattern in a regex object using convenient range syntax.
use regex_automata::Match;
let m = Match::must(3, 5..10);
assert_eq!(3, m.pattern().as_usize());
assert_eq!(5, m.start());
assert_eq!(10, m.end());
sourcepub fn pattern(&self) -> PatternID
pub fn pattern(&self) -> PatternID
Returns the ID of the pattern that matched.
The ID of a pattern is derived from the position in which it was
originally inserted into the corresponding regex engine. The first
pattern has identifier 0
, and each subsequent pattern is 1
, 2
and
so on.
sourcepub fn start(&self) -> usize
pub fn start(&self) -> usize
The starting position of the match.
This is a convenience routine for Match::span().start
.
sourcepub fn end(&self) -> usize
pub fn end(&self) -> usize
The ending position of the match.
This is a convenience routine for Match::span().end
.
sourcepub fn range(&self) -> Range<usize>
pub fn range(&self) -> Range<usize>
Returns the match span as a range.
This is a convenience routine for Match::span().range()
.