1 /*! 2 Provides a regex matcher that composes several other regex matchers 3 automatically. 4 5 This module is home to a meta [`Regex`], which provides a convenient high 6 level API for executing regular expressions in linear time. 7 8 # Comparison with the `regex` crate 9 10 A meta `Regex` is the implementation used directly by the `regex` crate. 11 Indeed, the `regex` crate API is essentially just a light wrapper over a meta 12 `Regex`. This means that if you need the full flexibility offered by this 13 API, then you should be able to switch to using this API directly without 14 any changes in match semantics or syntax. However, there are some API level 15 differences: 16 17 * The `regex` crate API returns match objects that include references to the 18 haystack itself, which in turn makes it easy to access the matching strings 19 without having to slice the haystack yourself. In contrast, a meta `Regex` 20 returns match objects that only have offsets in them. 21 * At time of writing, a meta `Regex` doesn't have some of the convenience 22 routines that the `regex` crate has, such as replacements. Note though that 23 [`Captures::interpolate_string`](crate::util::captures::Captures::interpolate_string) 24 will handle the replacement string interpolation for you. 25 * A meta `Regex` supports the [`Input`](crate::Input) abstraction, which 26 provides a way to configure a search in more ways than is supported by the 27 `regex` crate. For example, [`Input::anchored`](crate::Input::anchored) can 28 be used to run an anchored search, regardless of whether the pattern is itself 29 anchored with a `^`. 30 * A meta `Regex` supports multi-pattern searching everywhere. 31 Indeed, every [`Match`](crate::Match) returned by the search APIs 32 include a [`PatternID`](crate::PatternID) indicating which pattern 33 matched. In the single pattern case, all matches correspond to 34 [`PatternID::ZERO`](crate::PatternID::ZERO). In contrast, the `regex` crate 35 has distinct `Regex` and a `RegexSet` APIs. The former only supports a single 36 pattern, while the latter supports multiple patterns but cannot report the 37 offsets of a match. 38 * A meta `Regex` provides the explicit capability of bypassing its internal 39 memory pool for automatically acquiring mutable scratch space required by its 40 internal regex engines. Namely, a [`Cache`] can be explicitly provided to lower 41 level routines such as [`Regex::search_with`]. 42 43 */ 44 45 pub use self::{ 46 error::BuildError, 47 regex::{ 48 Builder, Cache, CapturesMatches, Config, FindMatches, Regex, Split, 49 SplitN, 50 }, 51 }; 52 53 mod error; 54 #[cfg(any(feature = "dfa-build", feature = "hybrid"))] 55 mod limited; 56 mod literal; 57 mod regex; 58 mod reverse_inner; 59 #[cfg(any(feature = "dfa-build", feature = "hybrid"))] 60 mod stopat; 61 mod strategy; 62 mod wrappers; 63