Struct SetMatches

pub struct SetMatches(/* private field */);

A set of matches returned by a regex set.

Values of this type are constructed by RegexSet::matches.

Implementations

impl SetMatches

fn matched_any(&self) -> bool

Whether this set contains any matches.

Example

use regex::RegexSet;

let set = RegexSet::new(&[
    r"[a-z]+@[a-z]+\.(com|org|net)",
    r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches("foo@example.com");
assert!(matches.matched_any());
fn matched_all(&self) -> bool

Whether all patterns in this set matched.

Example

use regex::RegexSet;

let set = RegexSet::new(&[
    r"^foo",
    r"[a-z]+\.com",
]).unwrap();
let matches = set.matches("foo.example.com");
assert!(matches.matched_all());
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::RegexSet;

let set = RegexSet::new([
    r"[a-z]+@[a-z]+\.(com|org|net)",
    r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches("example.com");
assert!(!matches.matched(0));
assert!(matches.matched(1));
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::RegexSet;

let set = RegexSet::new([
    r"[a-z]+@[a-z]+\.(com|org|net)",
    r"[a-z]+\.(com|org|net)",
]).unwrap();
let matches = set.matches("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());
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::RegexSet;

let set = RegexSet::new([
    r"[0-9]",
    r"[a-z]",
    r"[A-Z]",
    r"\p{Greek}",
]).unwrap();
let hay = "βa1";
let matches: Vec<_> = set.matches(hay).iter().collect();
assert_eq!(matches, vec![0, 1, 3]);

Note that SetMatches also implements the IntoIterator trait, so this method is not always needed. For example:

use regex::RegexSet;

let set = RegexSet::new([
    r"[0-9]",
    r"[a-z]",
    r"[A-Z]",
    r"\p{Greek}",
]).unwrap();
let hay = "βa1";
let mut matches = vec![];
for index in set.matches(hay) {
    matches.push(index);
}
assert_eq!(matches, vec![0, 1, 3]);

Trait Implementations

impl Clone for SetMatches

fn clone(&self) -> SetMatches

impl Debug for SetMatches

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl IntoIterator for SetMatches

type IntoIter = SetMatchesIntoIter;
type Item = usize;
fn into_iter(self) -> Self::IntoIter

Auto Trait Implementations

impl Freeze for SetMatches

impl RefUnwindSafe for SetMatches

impl Send for SetMatches

impl Sync for SetMatches

impl Unpin for SetMatches

impl UnsafeUnpin for SetMatches

impl UnwindSafe for SetMatches

Blanket Implementations

impl<T> Any for SetMatches where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for SetMatches where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for SetMatches where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for SetMatches where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for SetMatches

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for SetMatches where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T, U> Into<U> for SetMatches where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for SetMatches where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

impl<T, U> TryInto<U> for SetMatches where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>