| macro_rules! replace( |
| ($name:ident, $which:ident, $re:expr, |
| $search:expr, $replace:expr, $result:expr) => ( |
| #[test] |
| fn $name() { |
| let re = regex!($re); |
| assert_eq!(re.$which(text!($search), $replace), text!($result)); |
| } |
| ); |
| ); |
| |
| replace!(first, replace, r"[0-9]", "age: 26", t!("Z"), "age: Z6"); |
| replace!(plus, replace, r"[0-9]+", "age: 26", t!("Z"), "age: Z"); |
| replace!(all, replace_all, r"[0-9]", "age: 26", t!("Z"), "age: ZZ"); |
| replace!( |
| groups, |
| replace, |
| r"(?-u)(\S+)\s+(\S+)", |
| "w1 w2", |
| t!("$2 $1"), |
| "w2 w1" |
| ); |
| replace!( |
| double_dollar, |
| replace, |
| r"(?-u)(\S+)\s+(\S+)", |
| "w1 w2", |
| t!("$2 $$1"), |
| "w2 $1" |
| ); |
| // replace!(adjacent_index, replace, |
| // r"([^aeiouy])ies$", "skies", t!("$1y"), "sky"); |
| replace!( |
| named, |
| replace_all, |
| r"(?-u)(?P<first>\S+)\s+(?P<last>\S+)(?P<space>\s*)", |
| "w1 w2 w3 w4", |
| t!("$last $first$space"), |
| "w2 w1 w4 w3" |
| ); |
| replace!( |
| trim, |
| replace_all, |
| "^[ \t]+|[ \t]+$", |
| " \t trim me\t \t", |
| t!(""), |
| "trim me" |
| ); |
| replace!(number_hypen, replace, r"(.)(.)", "ab", t!("$1-$2"), "a-b"); |
| // replace!(number_underscore, replace, r"(.)(.)", "ab", t!("$1_$2"), "a_b"); |
| replace!( |
| simple_expand, |
| replace_all, |
| r"(?-u)(\w) (\w)", |
| "a b", |
| t!("$2 $1"), |
| "b a" |
| ); |
| replace!( |
| literal_dollar1, |
| replace_all, |
| r"(?-u)(\w+) (\w+)", |
| "a b", |
| t!("$$1"), |
| "$1" |
| ); |
| replace!( |
| literal_dollar2, |
| replace_all, |
| r"(?-u)(\w+) (\w+)", |
| "a b", |
| t!("$2 $$c $1"), |
| "b $c a" |
| ); |
| replace!( |
| no_expand1, |
| replace, |
| r"(?-u)(\S+)\s+(\S+)", |
| "w1 w2", |
| no_expand!("$2 $1"), |
| "$2 $1" |
| ); |
| replace!( |
| no_expand2, |
| replace, |
| r"(?-u)(\S+)\s+(\S+)", |
| "w1 w2", |
| no_expand!("$$1"), |
| "$$1" |
| ); |
| use_!(Captures); |
| replace!( |
| closure_returning_reference, |
| replace, |
| r"([0-9]+)", |
| "age: 26", |
| |captures: &Captures<'_>| { |
| match_text!(captures.get(1).unwrap())[0..1].to_owned() |
| }, |
| "age: 2" |
| ); |
| replace!( |
| closure_returning_value, |
| replace, |
| r"[0-9]+", |
| "age: 26", |
| |_captures: &Captures<'_>| t!("Z").to_owned(), |
| "age: Z" |
| ); |
| |
| // See https://github.com/rust-lang/regex/issues/314 |
| replace!( |
| match_at_start_replace_with_empty, |
| replace_all, |
| r"foo", |
| "foobar", |
| t!(""), |
| "bar" |
| ); |
| |
| // See https://github.com/rust-lang/regex/issues/393 |
| replace!(single_empty_match, replace, r"^", "bar", t!("foo"), "foobar"); |
| |
| // See https://github.com/rust-lang/regex/issues/399 |
| replace!( |
| capture_longest_possible_name, |
| replace_all, |
| r"(.)", |
| "b", |
| t!("${1}a $1a"), |
| "ba " |
| ); |
| |
| replace!( |
| impl_string, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!("Z".to_string()), |
| "age: Z6" |
| ); |
| replace!( |
| impl_string_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!(&"Z".to_string()), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_str_borrowed, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!(std::borrow::Cow::<'_, str>::Borrowed("Z")), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_str_borrowed_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!(&std::borrow::Cow::<'_, str>::Borrowed("Z")), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_str_owned, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!(std::borrow::Cow::<'_, str>::Owned("Z".to_string())), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_str_owned_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| t!(&std::borrow::Cow::<'_, str>::Owned("Z".to_string())), |
| "age: Z6" |
| ); |
| |
| replace!( |
| impl_vec_u8, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(vec![b'Z']), |
| "age: Z6" |
| ); |
| replace!( |
| impl_vec_u8_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(&vec![b'Z']), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_slice_borrowed, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_slice_borrowed_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(&std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_slice_owned, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])), |
| "age: Z6" |
| ); |
| replace!( |
| impl_cow_slice_owned_ref, |
| replace, |
| r"[0-9]", |
| "age: 26", |
| bytes!(&std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])), |
| "age: Z6" |
| ); |