// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?m)^.*:\s+([A-Z].*)_(\D+)_(\d+).*").unwrap();
let string = "dog-Cf-Nox1: Porites_lobata_1381 49.126 572 275 8 1 564 1 564 0.0 563
dog-Cf-Nox1: Porites_australiensis_5912 48.776 572 277 8 1 564 1 564 0.0 560
dog-Cf-Nox1: Astreopora_sp_20372 48.776 572 276 9 1 564 1 563 0.0 555
dog-Cf-Nox1: Montastraea_cavernosa_106939 48.148 567 279 7 5 564 6 564 0.0 555
dog-Cf-Nox1: Seriatopora_hystrix_66126 50.000 554 262 7 18 564 19 564 0.0 553
dog-Cf-Nox1: Porites_australiensis_4812 46.946 573 287 6 1 564 1 565 0.0 553
dog-Cf-Nox1: Stylophora_pistillata_7748 49.009 555 268 7 17 564 18 564 0.0 550
dog-Cf-Nox1: Porites_lobata_724 46.435 575 289 7 1 564 1 567 0.0 548
dog-Cf-Nox1: Acropora_digitifera_16260 46.935 571 288 7 1 564 1 563 0.0 538";
let substitution = "\\1,\\2,\\3";
// result will be a String with the substituted value
let result = regex.replace_all(string, substitution);
println!("{}", result);
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/