Trait regex_charclass::CharacterClass
source · pub trait CharacterClass: Sized {
// Required methods
fn new_from_range_u32<R: RangeBounds<u32>>(range: R) -> Option<Self>;
fn new_from_range_char<R: RangeBounds<char>>(range: R) -> Self;
fn get_cardinality(&self) -> u32;
fn to_regex(&self) -> String;
}
Expand description
A trait for RangeSet<Char>
to hold ranges of char
.
§Example:
use regex_charclass::{irange::{RangeSet, range::AnyRange}, char::Char, CharacterClass};
let range1 = RangeSet::new_from_range_char('a'..='z');
assert_eq!(26, range1.get_cardinality());
assert_eq!("[a-z]", range1.to_regex());
let range2 = RangeSet::new_from_ranges(&[
AnyRange::from(Char::new('0')..=Char::new('9')),
AnyRange::from(Char::new('A')..=Char::new('F')),
AnyRange::from(Char::new('a')..=Char::new('f')),
]);
assert_eq!("\\p{ASCII_Hex_Digit}", range2.to_regex());
let range2_complement = range2.complement();
assert_eq!("\\P{ASCII_Hex_Digit}", range2_complement.to_regex());
assert_eq!(".", range2.union(&range2_complement).to_regex());
assert_eq!("[]", range2.intersection(&range2_complement).to_regex());
assert_eq!("[g-z]", range1.difference(&range2).to_regex());
Required Methods§
fn new_from_range_u32<R: RangeBounds<u32>>(range: R) -> Option<Self>
fn new_from_range_char<R: RangeBounds<char>>(range: R) -> Self
fn get_cardinality(&self) -> u32
fn to_regex(&self) -> String
Object Safety§
This trait is not object safe.
Implementations on Foreign Types§
source§impl CharacterClass for RangeSet<Char>
impl CharacterClass for RangeSet<Char>
source§fn new_from_range_u32<R: RangeBounds<u32>>(range: R) -> Option<Self>
fn new_from_range_u32<R: RangeBounds<u32>>(range: R) -> Option<Self>
Create a new instance from the given range of u32
, return None
if the char
codes are invalid.
§Example:
use regex_charclass::{irange::RangeSet, CharacterClass};
let range = RangeSet::new_from_range_u32(97..=122);
source§fn new_from_range_char<R: RangeBounds<char>>(range: R) -> Self
fn new_from_range_char<R: RangeBounds<char>>(range: R) -> Self
Create a new instance from the given range of char
.
§Example:
use regex_charclass::{irange::RangeSet, CharacterClass};
let range = RangeSet::new_from_range_char('a'..='z');
source§fn get_cardinality(&self) -> u32
fn get_cardinality(&self) -> u32
Return the number of possible char
contained.
§Example:
use regex_charclass::{char::Char, irange::RangeSet, CharacterClass};
let range = RangeSet::new_from_range_char('a'..='z');
assert_eq!(26, range.get_cardinality());
source§fn to_regex(&self) -> String
fn to_regex(&self) -> String
Return a valid regular expression character class.
§Example:
use regex_charclass::{irange::{RangeSet, range::AnyRange}, char::Char, CharacterClass};
let range = RangeSet::new_from_range_char('a'..='z');
assert_eq!("[a-z]", range.to_regex());
let range = RangeSet::<Char>::new_from_ranges(&[
AnyRange::from(Char::new('0')..=Char::new('9')),
AnyRange::from(Char::new('A')..=Char::new('F')),
AnyRange::from(Char::new('a')..=Char::new('f')),
]);
assert_eq!("\\p{ASCII_Hex_Digit}", range.to_regex());