pub struct Regex { /* private fields */ }Expand description
NFA regex engine
Implementations§
Source§impl Regex
Implementing regex methods or functions
impl Regex
Implementing regex methods or functions
Sourcepub fn new(pattern: &str) -> Result<Self, &'static str>
pub fn new(pattern: &str) -> Result<Self, &'static str>
Creates new regex engine given the infix regex pattern.
§Errors
Returns descriptive error message string in case of failure which are categorized as:
- Syntax Error: Syntax error in the regex pattern. E.g. [[ab]]] (Syntax Error: Nested square brackets ‘[]’ not allowed.)
- Parse Error: Error occured during parsing the postfix regex expression. E.g. [ab]+? (Parse Error: Cannot apply repeat or duplication operator twice.)
§Examples
let mut r = nfa_regex::Regex::new("[a-z]").unwrap();
assert_eq!(r.match_pattern("a"), true);Sourcepub fn match_pattern(&mut self, s: &str) -> bool
pub fn match_pattern(&mut self, s: &str) -> bool
Matches input string to NFA regex pattern. Returns true if complete string matches the pattern, false otherwise.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
assert_eq!(r.match_pattern("ashutosh"), true);
assert_eq!(r.match_pattern("[om, ashutosh]"), false);
assert_eq!(r.match_pattern(""), false);Sourcepub fn search_pattern_and_get_index(&mut self, s: &str) -> (usize, usize)
pub fn search_pattern_and_get_index(&mut self, s: &str) -> (usize, usize)
Searches the pattern inside string and returns the first match’s begin and end index into the input string, otherwise returns begin and end index as 0.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
assert_eq!(r.search_pattern_and_get_index("ashutosh"), (0, 8));
assert_eq!(r.search_pattern_and_get_index("[om, ashutosh, 3.141593]"), (1, 3));
assert_eq!(r.search_pattern_and_get_index(""), (0, 0));Sourcepub fn search_pattern_and_get_slice<'a>(
&mut self,
s: &'a str,
) -> (&'a str, &'a str, &'a str)
pub fn search_pattern_and_get_slice<'a>( &mut self, s: &'a str, ) -> (&'a str, &'a str, &'a str)
Search the substring inside given string which matches the regex pattern and return unmatched prefix, matched and unmatched suffix string slices.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
assert_eq!(r.search_pattern_and_get_slice("ashutosh"), ("", "ashutosh", ""));
assert_eq!(r.search_pattern_and_get_slice("[om, ashutosh, 3.141593]"), ("[", "om", ", ashutosh, 3.141593]"));
assert_eq!(r.search_pattern_and_get_slice(""), ("", "", ""));Sourcepub fn search_all_patterns_and_get_index_list(
&mut self,
s: &str,
) -> Vec<(usize, usize)>
pub fn search_all_patterns_and_get_index_list( &mut self, s: &str, ) -> Vec<(usize, usize)>
Search all substrings inside given string which matches regex pattern. Return the list of begin-end indices for input string of all matched pattern.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
assert_eq!(r.search_all_patterns_and_get_index_list("ashutosh"), vec![(0, 8)]);
assert_eq!(r.search_all_patterns_and_get_index_list("[om, ashutosh, 3.141593]"), vec![(1, 3), (5, 13)]);
assert_eq!(r.search_all_patterns_and_get_index_list(""), vec![]);Sourcepub fn replace_pattern(&mut self, target: &mut String, src: &str)
pub fn replace_pattern(&mut self, target: &mut String, src: &str)
Replace the occurance of first match of regex pattern to substring inside given input string with another given source string.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
let mut s1 = String::from("ashutosh");
let mut s2 = String::from("[om, ashutosh, 3.141593]");
r.replace_pattern(&mut s1, "MAHAKALI");
r.replace_pattern(&mut s2, "MAHAKALI");
assert_eq!(s1, "MAHAKALI");
assert_eq!(s2, "[MAHAKALI, ashutosh, 3.141593]");Sourcepub fn replace_all_patterns(&mut self, target: &mut String, src: &str)
pub fn replace_all_patterns(&mut self, target: &mut String, src: &str)
Replaces all occurances of substring matching regex pattern inside given input string with given source string. Returns unchanged string if no matched substring found.
§Examples
let mut r = nfa_regex::Regex::new("[a-z]+").unwrap();
let mut s = String::from("[om, ashutosh, 3.141593]");
r.replace_all_patterns(&mut s, "MAHAKALI");
assert_eq!(s, "[MAHAKALI, MAHAKALI, 3.141593]");