Struct regex::bytes::SetMatches
source · pub struct SetMatches(/* private fields */);
Expand description
A set of matches returned by a regex set.
Values of this type are constructed by RegexSet::matches
.
Implementations§
source§impl SetMatches
impl SetMatches
sourcepub fn matched_any(&self) -> bool
pub fn matched_any(&self) -> bool
Whether this set contains any matches.
§Example
use regex::bytes::RegexSet;
let set = RegexSet::new(&[
r"[a-z]+@[a-z]+\.(com|org|net)",
r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches(b"foo@example.com");
assert!(matches.matched_any());
sourcepub fn matched(&self, index: usize) -> bool
pub fn matched(&self, index: usize) -> bool
Whether the regex at the given index matched.
The index for a regex is determined by its insertion order upon the
initial construction of a RegexSet
, starting at 0
.
§Panics
If index
is greater than or equal to the number of regexes in the
original set that produced these matches. Equivalently, when index
is greater than or equal to SetMatches::len
.
§Example
use regex::bytes::RegexSet;
let set = RegexSet::new([
r"[a-z]+@[a-z]+\.(com|org|net)",
r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches(b"example.com");
assert!(!matches.matched(0));
assert!(matches.matched(1));
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
The total number of regexes in the set that created these matches.
WARNING: This always returns the same value as RegexSet::len
.
In particular, it does not return the number of elements yielded by
SetMatches::iter
. The only way to determine the total number of
matched regexes is to iterate over them.
§Example
Notice that this method returns the total number of regexes in the original set, and not the total number of regexes that matched.
use regex::bytes::RegexSet;
let set = RegexSet::new([
r"[a-z]+@[a-z]+\.(com|org|net)",
r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches(b"example.com");
// Total number of patterns that matched.
assert_eq!(1, matches.iter().count());
// Total number of patterns in the set.
assert_eq!(2, matches.len());
sourcepub fn iter(&self) -> SetMatchesIter<'_> ⓘ
pub fn iter(&self) -> SetMatchesIter<'_> ⓘ
Returns an iterator over the indices of the regexes that matched.
This will always produces matches in ascending order, where the index yielded corresponds to the index of the regex that matched with respect to its position when initially building the set.
§Example
use regex::bytes::RegexSet;
let set = RegexSet::new([
r"[0-9]",
r"[a-z]",
r"[A-Z]",
r"\p{Greek}",
]).unwrap();
let hay = "βa1".as_bytes();
let matches: Vec<_> = set.matches(hay).iter().collect();
assert_eq!(matches, vec![0, 1, 3]);
Note that SetMatches
also implemnets the IntoIterator
trait, so
this method is not always needed. For example:
use regex::bytes::RegexSet;
let set = RegexSet::new([
r"[0-9]",
r"[a-z]",
r"[A-Z]",
r"\p{Greek}",
]).unwrap();
let hay = "βa1".as_bytes();
let mut matches = vec![];
for index in set.matches(hay) {
matches.push(index);
}
assert_eq!(matches, vec![0, 1, 3]);
Trait Implementations§
source§impl Clone for SetMatches
impl Clone for SetMatches
source§fn clone(&self) -> SetMatches
fn clone(&self) -> SetMatches
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more