Rust 正则表达式完全指南

Rust 正则表达式完全指南

Rust通过 regex crate提供正则表达式支持。本指南将详细介绍Rust中正则表达式的使用方法、性能优化和最佳实践。

1. 基础知识

1.1 添加依赖

Cargo.toml 中添加:

[dependencies]
regex = "1.10.2"

1.2 基本使用

use regex::Regex;

fn main() {
   
   
    // 创建正则表达式
    let re = Regex::new(r"\d+").unwrap();

    // 基本匹配
    let text = "123 456 789";
    
    // 检查是否匹配
    assert!(re.is_match(text));

    // 查找第一个匹配
    if let Some(mat) = re.find(text) {
   
   
        println!("Found match: {}", mat.as_str()); // "123"
    }

    // 查找所有匹配
    for mat in re.find_iter(text) {
   
   
        println!("Match: {}", mat.as_str());
    }
}

1.3 编译时正则表达式

使用 lazy_static 优化性能:

use lazy_static::lazy_static;
use regex::Regex;

lazy_static! {
   
   
    static ref EMAIL_RE: Regex = Regex::new(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$").unwrap();
    static ref PHONE_RE: Regex = Regex::new(r"^1[3-9]\d{9}$").unwrap();
}

fn is_valid_email(email: &str) -> bool {
   
   
    EMAIL_RE.is_match(email)
}

fn is_valid_phone(phone: &str) -> bool {
   
   
    PHONE_RE.is_match(phone)
}

2. 正则表达式语法

2.1 字符匹配

use regex::Regex;

fn main() {
   
   
    let text = "Rust 2021 is awesome! Price: $99.99";

    // 匹配数字
    let digits = Regex::new(r"\d+").unwrap();
    for mat in digits.find_iter(text) {
   
   
        println!("Number: {}", mat.as_str());
    }

    // 匹配单词
    let words = Regex::new(r"\w+").unwrap();
    for mat in words.find_iter(text) {
   
   
        println!("Word: {}", mat.as_str());
    }

    // 匹配空白字符
    let spaces = Regex::new(r"\s+").unwrap();
    let parts: Vec<&str> = spaces.split(text).collect();
    println!("Parts: {:?}", parts);

    // 自定义字符类
    let vowels = Regex::new(r"[aeiou]").unwrap();
    for mat in vowels.find_iter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值