Преобразование содержания файла при помощи Rust

У меня есть задача: преобразовать ссылки такого типа: [[content]], в ссылки такого типа: [content](content), или такие ссылки: [[content|rename]] в такие: [rename](content). Я могу использовать парсинг файла и заменение элементов, но мне будет более удобен вариант с regex. Какие есть способы такого преобразования?


Ответы (1 шт):

Автор решения: KoVadim

Я не большой специалист по расту, но я чуточку знаю регулярки. Вооружившись докой и чуточку поэкспериментировав, я набросал такое

use regex::Regex;

fn main() {
    let text = "hello, [[http://stackoverflow.com]] and [[Google|https://google.com]]!";
    let re = Regex::new(r"\[\[(?P<t>[^|\[\]]*?)\|(?P<u>[^|\[\]]*?)\]\]").unwrap();
    let repl = re.replace_all(text, "[$t]($u)");
    println!("{}", repl);
    let re2 = Regex::new(r"\[\[(?P<t>[^|\[\]]*?)\]\]").unwrap();
    let repl2 = re2.replace_all(&repl, "[$t]($t)");
    println!("{}", repl2);
}
→ Ссылка