macro_rules! re { (@q * $($res:tt)*) => { ... }; (@q ? $($res:tt)*) => { ... }; (@q + $($res:tt)*) => { ... }; (@q {$st:literal} $($res:tt)*) => { ... }; (@q {$st:literal,} $($res:tt)*) => { ... }; (@q {$st:literal, $ed:literal} $($res:tt)*) => { ... }; (@q $($res:tt)*) => { ... }; (@r ^ $($res:tt)*) => { ... }; (@r . $($res:tt)*) => { ... }; (@r [ $($range:tt)+ ] $($res:tt)*) => { ... }; (@r $ch:ident $($res:tt)*) => { ... }; (@r $ch:literal $($res:tt)*) => { ... }; (@r ($($regex:expr),+) $($res:tt)*) => { ... }; (@r $($res:tt)*) => { ... }; ($($res:tt)*) => { ... }; }