lazy-regex
Use the regex!
macro to build regexes:
- they're checked at compile time
- they're wrapped in
once_cell
lazy static initializers so that they're compiled only once - they can hold flags as suffix:
let case_insensitive_regex = regex!("ab*"i);
- regex creation is less verbose
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!
Build Regexes
use regex;
// build a simple regex
let r = regex!;
assert_eq!;
// build a regex with flag(s)
let r = regex!;
assert_eq!;
// you can use a raw literal
let r = regex!;
assert_eq!;
// or a raw literal with flag(s)
let r = regex!;
assert_eq!;
// this line wouldn't compile because the regex is invalid:
// let r = regex!("(unclosed");
Supported regex flags: 'i', 'm', 's', 'x', 'U'.
Test a match
use regex_is_match;
let b = regex_is_match!;
assert_eq!;
Extract a value
use regex_find;
let f_word = regex_find!;
assert_eq!;
Capture
use regex_captures;
let = regex_captures!.unwrap;
assert_eq!;
let = regex_captures!.unwrap;
assert_eq!;
assert_eq!;
assert_eq!;
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.
Shared lazy static
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:
use *;
pub static GLOBAL_REX: = lazy_regex!;
Like for the other macros, the regex is static, checked at compile time, and lazily built at first use.