8 releases
0.2.5 | Nov 11, 2021 |
---|---|
0.2.4 | May 31, 2019 |
0.2.3 | Dec 28, 2018 |
0.2.1 | Aug 30, 2018 |
0.1.1 | Aug 29, 2018 |
#909 in Text processing
432 downloads per month
Used in 7 crates
(6 directly)
32KB
632 lines
sedregex
A simple sed-like library that uses regex under the hood.
Usage
There are basically two public interfaces which you can enjoy:
find_and_replace
, which is useful for one-time processing of a bunch of commands,- and
ReplaceCommand
when you need to run the same command multiple times.
Examples
Let's jump straight to the examples!
use sedregex::{find_and_replace, ReplaceCommand};
fn main() {
// Both case-insensitive and global:
assert_eq!(
"Please stop wuts oh wut.",
ReplaceCommand::new("s/lol/wut/ig").unwrap().execute("Please stop Lols oh lol."),
);
// Multiple commands in one go:
assert_eq!(
"Please stop nos oh no.",
find_and_replace("Please stop Lols oh lol.", &["s/lol/wut/ig", "s/wut/no/g"]).unwrap()
);
// Same, but skipping the `s` character.
assert_eq!(
"Please stop wuts oh wut.",
find_and_replace("Please stop Lols oh lol.", &["/lol/wut/ig"]).unwrap()
);
// Skipping the flags.
assert_eq!(
"Please stop Lols oh wut.",
find_and_replace("Please stop Lols oh lol.", &["/lol/wut/"]).unwrap()
);
// Skipping the last slash.
assert_eq!(
"Please stop Lols oh wut.",
find_and_replace("Please stop Lols oh lol.", &["/lol/wut"]).unwrap()
);
// Escaping a slash in a replace part.
assert_eq!(
r"Please stop wut/s oh wut/.",
find_and_replace("Please stop Lols oh lol.", &[r"s/lol/wut\//gi"]).unwrap()
);
// Some regex stuff.
// Also note the lack of the trailing slash: it's opitonal!
assert_eq!(
"Second, First",
find_and_replace(
"First, Second",
&[r"s/(?P<first>[^,\s]+),\s+(?P<last>\S+)/$last, $first"],
).unwrap()
);
// Ok let's go with some simple regex stuff.
assert_eq!(
"Some weird typo",
find_and_replace("Some wierd typo", &[r"s/ie/ei/"]).unwrap()
);
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~2.2–3MB
~55K SLoC