使用正则表达式

Rust:
使用正则表达式

如何做:

Rust的regex库是处理正则表达式的首选。要使用它,你首先需要将它添加到你的Cargo.toml中:

[dependencies]
regex = "1"

然后,你可以开始在你的Rust代码中实现regex功能。以下是执行一些常见操作的方法:

匹配字符串中的模式

use regex::Regex;

fn main() {
    let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
    let date = "2023-04-15";

    println!("文本是否匹配日期模式?{}", re.is_match(date));
    // 输出:文本是否匹配日期模式?true
}

查找和访问匹配

use regex::Regex;

fn main() {
    let text = "Rust 2023, C++ 2022, Python 2021";
    let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();

    for cap in re.captures_iter(text) {
        println!("语言:{}, 年份:{}", &cap[1], &cap[2]);
    }
    // 输出:
    // 语言:Rust, 年份:2023
    // 语言:C++, 年份:2022
    // 语言:Python, 年份:2021
}

替换文本

use regex::Regex;

fn main() {
    let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();
    let text = "Rust 2023, C++ 2022, Python 2021";
    let replaced = re.replace_all(text, "$1 在 $2 年更新");

    println!("更新后的文本:{}", replaced);
    // 输出:更新后的文本:Rust 在 2023 年更新, C++ 在 2022 年更新, Python 在 2021 年更新
}

使用正则表达式分割文本

use regex::Regex;

fn main() {
    let re = Regex::new(r"\W+").unwrap(); // 在任何非单词字符处分割
    let text = "Rust-C++-Python-Go";

    let fields: Vec<&str> = re.split(text).collect();

    for field in fields {
        println!("语言:{}", field);
    }
    // 输出:
    // 语言:Rust
    // 语言:C++
    // 语言:Python
    // 语言:Go
}

这些示例为你开始使用Rust中的正则表达式提供了基础指南。随着你的需求变得更加复杂,regex箱(crate)为复杂的模式匹配和文本操作任务提供了丰富的功能。