Rustで正規表現を使って文字列を置換する

正規表現は cargo add regex としてライブラリを入れる必要があります。なんかよくやる前方一致で消すようなやつはこんなもんで消せますが

use regex::Regex;

fn main() {
    let pattern = Regex::new("^.*/").unwrap();
    assert_eq!(pattern.replace("/aaa/bbb/ccc/ddd", ""), "ddd");
}

後方参照がないらしく(私の探し方が悪かったかな?)、JavaScriptで言うところの下記のような処理をするには

"This is a unko".replace(/^.*\s([a-z]+)$/, "I love $1");

Captures でマッチした部分を得て、それを使って文字列を組み上げるのが良いかと。

use regex::Regex;

fn main() {
    let pattern = Regex::new("^.*\\s([a-z]+)$").unwrap();
    let result = pattern.captures("This is a unko").unwrap();
    assert_eq!(format!("I love {}", result.get(1).unwrap().as_str()), "I love unko");
}

使うところそんなにないのかな

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA