Use the regex!
macro to build regexes:
once_cell
lazy static initializers so that they're compiled only oncelet case_insensitive_regex = regex!("ab*"i);
This macro returns references to normal instances of regex::Regex
so all the usual features are available.
You may also use shortcut macros for testing a match or capturing groups as substrings:
regex_is_match!
regex_find!
regex_captures!
```rust use lazy_regex::regex;
// build a simple regex let r = regex!("sa+$"); asserteq!(r.ismatch("Saa"), false);
// build a regex with flag(s) let r = regex!("sa+$"i); asserteq!(r.ismatch("Saa"), true);
// you can use a raw literal let r = regex!(r#"^"+$"#); asserteq!(r.ismatch("\"\""), true);
// or a raw literal with flag(s) let r = regex!(r#"^\s("[a-t]"\s*)+$"#i); asserteq!(r.ismatch(r#" "Aristote" "Platon" "#), true);
// this line wouldn't compile because the regex is invalid: // let r = regex!("(unclosed");
``` Supported regex flags: 'i', 'm', 's', 'x', 'U'.
```rust use lazyregex::regexis_match;
let b = regexismatch!("[ab]+", "car"); assert_eq!(b, true); ```
```rust use lazyregex::regexfind;
let fword = regexfind!(r#"\bf\w+\b"#, "The fox jumps."); asserteq!(fword, Some("fox")); ```
```rust use lazyregex::regexcaptures;
let (, letter) = regexcaptures!("([a-z])[0-9]+"i, "form A42").unwrap(); assert_eq!(letter, "A");
let (whole, name, version) = regexcaptures!( r#"(\w+)-([0-9.]+)"#, // a literal regex "This is lazyregex-2.0!", // any expression ).unwrap(); asserteq!(whole, "lazyregex-2.0"); asserteq!(name, "lazyregex"); assert_eq!(version, "2.0"); ```
There's no limit to the size of the tupple. It's checked at compile time to ensure you have the right number of capturing groups.
When a regular expression is used in several functions, you sometimes don't want to repeat it but have a shared static instance.
The regex!
macro, while being backed by a lazy static regex, returns a reference.
If you want to have a shared lazy static regex, use the lazy_regex!
macro:
```rust use lazy_regex::*;
pub static GLOBALREX: Lazy
Like for the other macros, the regex is static, checked at compile time, and lazily built at first use.