#regex #result #try #supporting #replace #methods #error

regex_try

通过 Result 传递错误的 Regex 替换方法

1 个不稳定版本

0.1.0 2021 年 3 月 1 日

#57 in #try

MIT/Apache

5KB

Regex 的扩展,支持在 replace 方法中使用 Result

replacereplace_allreplacen 方法接受一个函数,该函数返回每个匹配子字符串的替换内容,但它们不允许该函数返回 Result。此 crate 提供了 try_replacetry_replace_alltry_replacen,以填补这一空白。

使用

使用 use regex_try::RegexTry 来使用此 crate 提供的额外方法。

示例

use regex::Regex;
use regex_try::RegexTry;

pub fn main() -> Result<(), std::io::Error> {
  let re = Regex::new(r"load! (\w+);").unwrap();
  let template = std::fs::read_to_string("Cargo.toml")?;
  let result = re.try_replace_all(&template, |captures|
    // read_to_string returns a Result, and so it couldn't
    // be used with re.replace_all
    std::fs::read_to_string(&captures[1])
  )?;
  println!("{}", result);
  Ok(())
}

依赖项

~2–3MB
~53K SLoC